【问题标题】:Slow XML-RPC in Windows 7 with XML-RPC.NET带有 XML-RPC.NET 的 Windows 7 中的慢速 XML-RPC
【发布时间】:2011-01-15 04:36:27
【问题描述】:

我正在考虑使用 XML-RPC.NET 与用 Python 编写的 Linux XML-RPC 服务器进行通信。我已经尝试了来自 Cook Computing 的 XML-RPC.NET 的示例应用程序 (MathApp),但该应用程序需要 30 秒才能在与服务器的同一 LAN 中添加两个数字。

我还尝试在 Windows 7 上运行一个用 Python 编写的简单客户端来调用同一服务器,并在 5 秒内响应。该机器具有 4 GB 的 RAM,具有相当的处理能力,因此这不是问题。

然后我尝试使用 Java 和 PHP 从 Windows XP 系统调用服务器。两个反应都很快,几乎是瞬间。服务器也在 localhost 上快速响应,所以我认为延迟不是由服务器引起的。

我的谷歌搜索返回给我一些关于 Windows 使用 IPv6 的问题,但我们对服务器的调用确实包含同一子网中的 IPv4 地址(不是主机名)。无论如何,我关闭了 IPv6,但没有任何改变。

还有其他方法可以检查延迟的可能原因吗?

【问题讨论】:

  • 获取 Wireshark (wireshark.org) 并查看线路上发生的情况 - 这很可能会将您指向罪魁祸首(或至少缩小范围)。尤其是因为您可以将其与工作沟通进行比较。
  • xml-rpc 并不以超快而闻名(即使这里可能存在问题)你可能想看看 ICE (www.zeroc.com),它会提供相同的有点快。

标签: c# .net python windows-7 xml-rpc


【解决方案1】:

a bug 影响BaseHTTPServer 及其子类(包括SimpleXMLRPCServer)。基本上,您的服务器可能会为它尝试记录的每个 IP 地址调用 socket.getfqdn 函数。这个article 可能解释得更好。

解决方法在那里描述,对于 TL;DR:

import BaseHTTPServer
def not_insane_address_string(self):
    host, port = self.client_address[:2]
    return '%s (no getfqdn)' % host #used to call: socket.getfqdn(host)
BaseHTTPServer.BaseHTTPRequestHandler.address_string = \
    not_insane_address_string

【讨论】:

  • 完美运行:对于 python 3.1 使用 from http.server import BaseHTTPRequestHandler
【解决方案2】:

在客户端计算机上运行数据包捕获,检查网络流量计时与调用函数的时间。

这可以帮助您确定慢速过程中的延迟位置,例如应用启动时间、名称解析等

您如何从客户端寻址服务器?通过IP?通过 FQDN?您使用的每个应用程序中的寻址方法是否相同?

如果你从同一个慢速应用程序中多次调用同一个远程过程,所花费的时间会线性增加吗?

【讨论】:

    猜你喜欢
    • 2011-02-19
    • 2011-07-21
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 2016-01-12
    • 2023-03-30
    相关资源
    最近更新 更多