【问题标题】:.net remoting stops every 100 seconds.net 远程处理每 100 秒停止一次
【发布时间】:2008-11-17 15:00:58
【问题描述】:

我们有一个非常奇怪的问题,我们的一个应用程序正在使用 .net 远程处理不断地查询服务器,并且每隔 100 秒应用程序会停止查询一小段时间,然后恢复操作。问题出在客户端而不是服务器上,因为应用程序实际上同时查询多个服务器,并且同时停止从所有服务器接收数据。

【问题讨论】:

    标签: c# .net remoting


    【解决方案1】:

    100 秒是一个赠送数字,因为它是 .Net 中 web 请求的默认超时时间。

    我过去曾看到 PSI(Microsoft Project 中的项目服务器接口)没有覆盖超时,因此应用了 100 秒的默认值,并且会终止任何与它通话的时间超过该时间。

    您是否有权访问所有代码,并且您确定您已在适用的情况下设置了超时,以便不会在您不知情的情况下应用任何默认值?

    【讨论】:

    • 它看起来像一些默认值,但我说的是远程处理请求而不是网络请求,并且在远程处理中没有发现任何这样的默认值
    【解决方案2】:

    我以前从未见过这种行为,不幸的是,这是一个模糊的场景,我认为您将很难在此板上找到遇到问题的人。它可能特定于您的应用程序。

    我认为您可以进行一些调查来帮助您缩小问题范围。

    1. 确定实际停止的是客户端还是服务器。如果您在确定这一点时遇到问题,请尝试安装数据包过滤器并监控流量以查看谁发送了最后一个数据。您可能无法读取二进制数据,但至少您会知道谁落后了。
    2. 一旦确定是客户端还是服务器导致了延迟,请尝试调试应用程序并获取发生挂起的断点。这应该为您提供足够的详细信息来帮助追踪问题。或者至少就 SO 提出一个更明确的问题。

    【讨论】:

    • 是的,我知道这很模糊,但这是一个老问题(3 年),这里没有人能够弄清楚,所以我很想看看其他人是否看到了它。问题出在客户端而不是服务器上
    【解决方案3】:

    应用程序是如何编码来实现连续查询的?它是在一个连续的循环中吗?还是带有 Thread.Sleep 的循环?还是在计时器上?,

    首先确定您的系统是否在您期望的时候在您的代码中执行这个“触发器”,或者如果它是,并且远程服务器没有响应......所以......

    如果您无法在可以调试的开发环境中重现此问题,那么,如果可以,我建议您在此循环中添加代码,以便每次将其写入日志文件(或其他一些持久性机制) “应该”检查它用来决定是否查询远程服务器的任何条件,然后在问题再次发生时查看这些日志......

    如果您可以在远程服务器中执行相同的操作,以记录服务器何时收到远程请求,这也会有所帮助...

    ...哦,是的,只是一个想法,(我不知道您是如何编码的...)但是如果您在客户端中使用单独的线程来发出远程处理请求,并且通道正在在那个单独的线程上注册和取消注册,确保您正在消除请求的冲突,因为您不能同时在同一台机器上注册同一个端口两次...... (尽管如果这是问题所在,这可能会在您的客户中引发异常)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多