先说我遇到的问题,我需要访问多个服务器的一个相同的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首次用时偏长问题的更多相关文章

  1. 首次开发H5长图页总结

    首次开发H5长图页总结. 资源统一加载 资源统一加载, 分开获取 定义资源标识符 在src/resources目录下 定义各个资源模块. 在Asset.js中获取定义好的所有模块, 循环出具体的文件路 ...

  2. MMI开机时间偏长

      Mini版本开机时间长 Mini版本开机时间长1. Problem Description:2. Analysis:3. Solution:4. Summary: 1. Problem Descr ...

  3. 关于PLSQL启动用时较长的问题解决

    问题: 打开登陆界面缓慢. 解决: 1.删除控制面板中的打印机 2.将打印机改为手动并停止启动状态 .

  4. 【Android端 APP 启动时长获取】启动时长获取方案及具体实施

    一.什么是启动时长? 1.启动时长一般包括三种场景,分别是:新装包的首次启动时长,冷启动时长.热启动时长 冷启动 和 热启动 : (1)冷启动:当启动应用时,后台没有该程序的进程,此时启动的话系统会分 ...

  5. LeetCode03 最长无重复子串

    题目 给定一个字符串,找出不含有重复字符的最长子串的长度. 解答 刚开始以为只是一遍遍历后来的字符和前面一样便开始算新子串,给的案例都过了,但是卡在了"dvdf" 后来经过重重试验 ...

  6. vue-router路由懒加载(解决vue项目首次加载慢)

    懒加载:----------------------------------------------------? 也叫延迟加载,即在需要的时候进行加载,随用随载. 为什么需要懒加载? 像vue这种单 ...

  7. JS案例 - 基于vue的移动端长按手势

    ================================惯例碎碎念前言================================ 当时首先想到要做长按事件的时候,我想到的是vue内部的自 ...

  8. 楼天城楼教主的acm心路历程(作为励志用)

    楼主个人博客:小杰博客 利用假期空暇之时,将这几年GCJ,ACM,TopCoder 參加的一些重要比赛作个 回顾.昨天是GCJ2006 的回顾,今天时间上更早一些吧,我如今还清晰记得3 年 前,我刚刚 ...

  9. 【转】楼天城楼教主的acm心路历程(作为励志用)

    利用假期空闲之时,将这几年GCJ,ACM,TopCoder 参加的一些重要比赛作个回顾.昨天是GCJ2006 的回忆,今天时间上更早一些吧,我现在还清晰记得3 年前,我刚刚参加ACM 时参加北京赛区2 ...

随机推荐

  1. Flex 加载tiff

    gis系统常常要加载tiff,因为好多土地证书,各种文件都是扫描件,如果你是用as来写的前台,怎么加载呢,顺便说下用插件AlternaTIFF也是可以得不过浏览器加载这么多插件是不太好的. 首先TIF ...

  2. 页面打开 抛出w3wp.exe 中发生未处理异常

    页面打开 抛出w3wp.exe 中发生未处理异常

  3. MBW内存测试

    在测试前,理应了解本机所具备的特点,比如CPU频率.内存频率.内存大小,等等信息. 查看CPU用如下命令(多少个核,频率,特性等): cat /proc/cpuinfo 查看内存用如下命令:(只有当前 ...

  4. leetcode-【简单题】Two Sum

    题目: Given an array of integers, return indices of the two numbers such that they add up to a specifi ...

  5. jsp与Servlet

  6. vbs下载文件

    Dim Url,SavePath,FilenameUrl="http://www.kumi.cn/photo/43/7e/63/437e636e413071e3.jpg"SaveP ...

  7. 移动端自动化环境搭建-Android-SDK的安装

    安装android的sdk包 A.安装依赖 我们做的是移动端的自动化测试,肯定就需要android的开发环境 网上也有好多教程,我只是用的最简单的 B.安装过程 首先需要前往android官网,找到S ...

  8. jquery源码学习之extend

    jquery的extend方法现项目中经常使用,现在了解一下它的实现. 说起extend就要先了解一个jQuery的$.extend和$.fn.extend作用及区别 jQuery为开发插件提拱了两个 ...

  9. SQL Server开启READ_COMMITTED_SNAPSHOT

    --查询数据库状态 select name,user_access,user_access_desc,     snapshot_isolation_state,snapshot_isolation_ ...

  10. DCOM中的APPID的用处,以及RemoteServerName的传递问题

      DCOM中的APPID的用处,以及RemoteServerName的传递问题