• 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

  • 相关阅读:
    easyUI footer 的格式渲染
    VS常用快捷键(最全)
    vs2008 asp.net “无法连接到ASP.NET Development server”
    Microsoft ReportViewer 控件类型版本兼容问题及解决方法
    提取 Microsoft.ReportViewer等dll
    百度地图根据list经纬度算每个点到剩余点的平均距离、最远距离和最近距离
    求数组的最大值、最小值、平均值
    C#为配置文件加密的实现方法
    去除字符串最后一个逗号
    JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值
  • 原文地址:https://www.cnblogs.com/kevin-Y/p/3309234.html
Copyright © 2020-2023  润新知