Python 如何调试导致连接被拒绝或连接超时的原因?
我有以下代码,已经工作了大约一年:Python 如何调试导致连接被拒绝或连接超时的原因?,python,networking,Python,Networking,我有以下代码,已经工作了大约一年: import urllib2 req = urllib2.Request('https://somewhere.com','<Request></Request>') data = urllib2.urlopen(req) print data.read() 在被拒绝的连接上: $telnet somewhere.com 443 正在尝试XXX.YY.ZZZ.WWW。。。 telnet:无法连接到远程主机:连接被拒绝 超时时: $
import urllib2
req = urllib2.Request('https://somewhere.com','<Request></Request>')
data = urllib2.urlopen(req)
print data.read()
在被拒绝的连接上:
$telnet somewhere.com 443
正在尝试XXX.YY.ZZZ.WWW。。。
telnet:无法连接到远程主机:连接被拒绝
超时时:
$telnet somewhere.com 443
正在尝试XXX.YY.ZZZ.WWW。。。
telnet:无法连接到远程主机:连接超时
使用a截获发送至somewhere.com
的数据包。研究这些数据包应该能告诉你发生了什么
超时或连接被拒绝可能意味着远程主机太忙。问题
问题出在网络层。以下是已解释的状态代码:
:对等方未监听您试图连接到的相应网络。这通常意味着防火墙正在主动拒绝连接,或者其他站点上的相应服务未启动或过载连接被拒绝
:在尝试建立TCP连接的过程中,在给定的时间限制内,另一端没有响应。在urllib的上下文中,这也可能意味着HTTP响应没有及时到达。这有时也是由防火墙引起的,有时是由远程(甚至本地)站点上的网络拥塞或重负载引起的连接超时
如果网络拥塞不是问题(例如,丢失的数据包不超过5%),则应与远程服务器管理员联系,找出问题所在。他可以在系统日志中看到相关信息。在远程站点上运行数据包分析器也可能比在本地站点上更具启发性。因此,明确建议使用
netstat-tlp
检查端口是否打开。在linux终端上尝试telnet somewhere.com 443
,并检查其名称解析失败或连接失败的位置。使用Try-and-catch语句,然后在catch语句中打印错误可能会揭示更多信息信息。telnet告诉您的IP地址是否始终相同?是的,每个telnet requestServer故障的IP地址都相同。我正在运行mtr,在特定主机上,大约10%的数据包丢失。这是否意味着此特定主机有问题?取决于数据包丢失的位置。请参阅我答案的mtr
段中添加的文本。所谓“重载”,是指RAM还是CPU?