我正在考虑使用XML-RPC.NET与用Python编写的Linux XML-RPC服务器进行通信。我尝试了一个来自库克计算公司的XML-RPC.NET的示例应用程序(MathApp),但该应用程序花了30秒在与服务器相同的局域网内添加两个号码。
我还尝试在Windows7上运行一个用Python编写的简单客户端来调用相同的服务器,它在5秒内做出了响应。这台机器有4 GB的RAM,具有相当的处理能力,所以这不是问题。
然后,我尝试使用Java和PHP从Windows XP系统调用服务器。这两种反应都很快,几乎是瞬间的。服务器在本地主机上响应也很快,所以我不认为延迟是由服务器引起的。
我的谷歌搜索返回了一些关于Windows使用IPv6的问题,但我们对服务器的调用确实在同一子网中包含了IPv4地址(而不是主机名)。无论如何,我关闭了IPv6,但什么也没有改变。
有没有其他方法可以检查延迟的可能原因?
发布于 2010-04-21 04:21:37
存在影响BaseHTTPServer及其子类(包括SimpleXMLRPCServer)的a bug。基本上,您的服务器可能会为它试图记录的每个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发布于 2010-02-10 17:35:24
在客户机上运行数据包捕获,检查网络流量计时与函数被调用的时间。
这可以帮助您确定延迟在您的缓慢进程中的位置,例如应用程序启动时间、名称解析等。
您如何从客户端寻址服务器?按IP?按FQDN?您使用的每个应用程序的编址方法是否相同?
如果您从同一个缓慢的应用程序多次调用同一个远程过程,所用的时间会线性增加吗?
https://stackoverflow.com/questions/2235643
复制相似问题