.net - 远程处理性能会随着时间的推移而降低

标签 .net remoting client-server

我正在开发一个客户端-服务器解决方案,该解决方案使用 .NET 2.0 Remoting(服务器激活、TCP channel 上的二进制格式、Vista Ultimate)进行通信。目前我正在分析应用程序并在同一台机器上运行所有内容。我注意到,如果我启动应用程序,几分钟内一切正常,然后突然每次远程调用都需要几秒钟才能执行。我在两端都登录并记录每个电话。服务器端的实现只需要几分之一秒的时间来执行,而整个远程调用很慢。进一步的分析表明,远程处理在服务器端降级:虽然远程服务的内部工作在几分之一秒内执行,但响应非常慢。如果我重新启动服务器,一切都会再次恢复正常几分钟。

有没有人经历过这样的事情?

谢谢!

更新:
我检查过,如果我将远程对象的生命周期配置为 1 天,我仍然遇到同样的问题。

更新:
我正在使用 Ingo Ramer (HOWTO: Use Interface-based remote objects with config files) 建议的模式来处理我的所有远程处理内容,如果这有什么不同的话。

客户端代码:

public static object CreateInstance(Type type)
{
    if (!Initialized)
        InitWellKnownTypesCache();

    WellKnownClientTypeEntry typeEntry = (WellKnownClientTypeEntry)wellKnownTypesCache[type];
    if (null == typeEntry)
        throw new RemotingException("Type not found.");

    if (string.IsNullOrEmpty(serverObjectActivationUri))
        throw new RemotingException("ServerObjectActivationUri wasn't configured. Cannot create server object instance.");

    return Activator.GetObject(typeEntry.ObjectType, string.Format(serverObjectActivationUri, typeEntry.ObjectUrl));
}

服务器端只有正确的配置文件,如下所示:









        <service>
            <wellknown 
                mode="Singleton" 
                type="MyDomain.SomeDomain, MyDomain" 
                objectUri="SomeDomainService"
            />

除了 RemotingConfiguration.Configure("MyDomainService.exe.config", false); 我什么都不做在我的服务器和客户端代码中都没有。

最佳答案

使用一些网络监控工具,如 Wireshark查看您的问题是与网络相关还是与服务器同步相关。

如果证明不是网络问题,那么尝试在链中(就在 channel 之前)附加一个简单的自定义同步来记录并获取钩子(Hook)之间的时间。

关于.net - 远程处理性能会随着时间的推移而降低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/333954/

相关文章:

c# - .NET 函数中的线程永远不会返回

c# - WinForms:NumericUpDown (.NET CF 3.5) 和实数

apache-flex - 如何防止窥探者访问 CFC 中的 ="remote"功能?

.net - 二进制序列化,向类添加一个新字段——它会工作吗?

c# - 如何摆脱 "API restriction UnitTestFramework.dll already loaded"错误?

.net - 多文档应用程序的 MVVM 设计?

.net - 为什么我发现 WCF 的性能比远程处理的性能慢?

c++ - 如何避免在 C++11 服务器程序中为多个客户端使用多线程

java - MyBatis 中的多线程服务器客户端

c++ - udp客户端服务器从拉模式转变为推模式