Remoting首次用时偏长问题
先说我遇到的问题,我需要访问多个服务器的一个相同的Remoting方法,根据方法返回的结果决定优先使用某个服务器。
var _remoteFacade = Activator.GetObject(typeof(IAppCommonFacade), "tcp://" + ServerIp + ":10002/IAppCommonFacade") as IAppCommonFacade;
TimeSpan sp = DateTime.Now - start;
try
{
writeLog(ServerIp, "DetectServerStatus start...");
result = _remoteFacade.DetectServerStatus();
TimeSpan sp1 = DateTime.Now - start;
writeLog(ServerIp, string.Format("DetectServerStatus={0},获取接口用时{1},调用方法用时{2}", result,sp.TotalMilliseconds,sp1.TotalMilliseconds));
isCompleted = true;
}
catch
{
writeLog(ServerIp, ",DetectServerStatus error.");
}
于是我发现一个现象,第一个被调用的服务器用时大大超出其他服务器。强调一下,这与服务器IP没关系,以下日志22服务器用时多,如果95和22的先后换一个,那用时多的就是95.
[2013-09-09 08:53:31]:priorityServerChecker 192.168.1.22: DetectServerStatus start...
[2013-09-09 08:53:31]:call DetectServerStatus used 15.625 毫秒 .it's at tcp://192.168.1.22:10002/IAppCommonFacade
[2013-09-09 08:53:31]:priorityServerChecker 192.168.1.22: DetectServerStatus=0,获取接口用时0,调用方法用时315.625
[2013-09-09 08:53:31]:check server 192.168.1.22,完成检测,Reslut=0
[2013-09-09 08:53:31]:priorityServerChecker 192.168.1.95: DetectServerStatus start...
[2013-09-09 08:53:31]:call DetectServerStatus used 0 毫秒 .it's at tcp://192.168.1.95:10002/IAppCommonFacade
[2013-09-09 08:53:31]:priorityServerChecker 192.168.1.95: DetectServerStatus=0,获取接口用时0,调用方法用时15.625
我想到了是不是与dotnet的编译用时有关。因为是登录的界面,所以这半秒的时间是不能放过的,一定要消灭它。于是在界面Load时,在检测前增加一个后台线程,这里我称其为“线程B”,在“线程B”先调用一次第一个服务器。上面的第一次调用的问题确实解决了。我想确认一下自已的想法,于是在“线程B”里放日志检查用时,结果却让人摸不着头脑
“线程B”里用时:[2013-09-09 09:48:34]:check server 192.168.1.95,prepareCheckJob完成,用时31.25
检测线程用法:[2013-09-09 09:49:32]:priorityServerChecker 192.168.1.95: DetectServerStatus=0,用时406.25
难道这与ManualResetEvent有关?
2018-11-24补充
https://www.cnblogs.com/francis-gao/p/4912575.html
这里提出修改app.config

Remoting首次用时偏长问题的更多相关文章
- 首次开发H5长图页总结
首次开发H5长图页总结. 资源统一加载 资源统一加载, 分开获取 定义资源标识符 在src/resources目录下 定义各个资源模块. 在Asset.js中获取定义好的所有模块, 循环出具体的文件路 ...
- MMI开机时间偏长
Mini版本开机时间长 Mini版本开机时间长1. Problem Description:2. Analysis:3. Solution:4. Summary: 1. Problem Descr ...
- 关于PLSQL启动用时较长的问题解决
问题: 打开登陆界面缓慢. 解决: 1.删除控制面板中的打印机 2.将打印机改为手动并停止启动状态 .
- 【Android端 APP 启动时长获取】启动时长获取方案及具体实施
一.什么是启动时长? 1.启动时长一般包括三种场景,分别是:新装包的首次启动时长,冷启动时长.热启动时长 冷启动 和 热启动 : (1)冷启动:当启动应用时,后台没有该程序的进程,此时启动的话系统会分 ...
- LeetCode03 最长无重复子串
题目 给定一个字符串,找出不含有重复字符的最长子串的长度. 解答 刚开始以为只是一遍遍历后来的字符和前面一样便开始算新子串,给的案例都过了,但是卡在了"dvdf" 后来经过重重试验 ...
- vue-router路由懒加载(解决vue项目首次加载慢)
懒加载:----------------------------------------------------? 也叫延迟加载,即在需要的时候进行加载,随用随载. 为什么需要懒加载? 像vue这种单 ...
- JS案例 - 基于vue的移动端长按手势
================================惯例碎碎念前言================================ 当时首先想到要做长按事件的时候,我想到的是vue内部的自 ...
- 楼天城楼教主的acm心路历程(作为励志用)
楼主个人博客:小杰博客 利用假期空暇之时,将这几年GCJ,ACM,TopCoder 參加的一些重要比赛作个 回顾.昨天是GCJ2006 的回顾,今天时间上更早一些吧,我如今还清晰记得3 年 前,我刚刚 ...
- 【转】楼天城楼教主的acm心路历程(作为励志用)
利用假期空闲之时,将这几年GCJ,ACM,TopCoder 参加的一些重要比赛作个回顾.昨天是GCJ2006 的回忆,今天时间上更早一些吧,我现在还清晰记得3 年前,我刚刚参加ACM 时参加北京赛区2 ...
随机推荐
- [EventBus源码解析] EventBus.post 方法详述
前情概要 上一篇blog我们了解了EventBus中register/unregister的过程,对EventBus如何实现观察者模式有了基本的认识.今天我们来看一下它是如何分发一个特定事件的,即po ...
- 安卓处理原始XML文件
// 获取XML文档(Parser:剖析器) XmlResourceParser parser = getResources().getXml(R.xml.person); try { // 文档未完 ...
- Lighttpd虚拟主机和多域名的配置
lighttpd是个轻巧的web服务器组件,在linux系统上较为流行,功能能满足一般网站的需求(虚拟主机,伪静态,防盗链等),而跑起来负载却低于apache. 一般网站地址的形式为www.xxx.c ...
- linux网络完全与防护
7.1 网络封包联机进入主机的流程 7.1.1 封包进入主机的流程 1.经过防火墙的分析 iptables 主要功能是封包过滤 主要分析TCP/IP的封包表头来进行过滤的机制 分析的是OSI的第二 ...
- TListView的一些操作
1,让滚动条滚动的API SetScrollPos int SetScrollPos( _In_ HWND hWnd, _In_ int nBar, _In_ int n ...
- python异常处理、反射、socket
一.isinstance 判断对象是否为类的实例 n1 = print isinstance(n1,int) class A: pass class B(A): pass b= B() print i ...
- 使用虚拟机win7系统遇到问题及解决
安装VMware并在其中安装win7专业版系统,这里不再赘述.因为...我就是照着百度来的.哈哈 说说使用中遇到的问题. 本来安装成功后,可以很愉快的运行着.后来莫名奇妙的出现了两个问题:1.虚拟机运 ...
- pickle
[pickle] Python提供了pickle模块来实现序列化. 首先,我们尝试把一个对象序列化并写入文件: pickle.dumps()方法把任意对象序列化成一个bytes,然后,就可以把这个by ...
- LeetCode OJ 274. H-Index
Given an array of citations (each citation is a non-negative integer) of a researcher, write a funct ...
- iOS button文字居中
新建一个UIButton的category .h @interface UIButton (QXTitleInCenter) -(instancetype)init; @end .m @impleme ...