如何从 Ubuntu 服务器调试某个 URL 的超时?

如何从 Ubuntu 服务器调试某个 URL 的超时?

我有一台运行 Ubuntu 10.04 的专用服务器。

尝试访问某个 URL(基于 HTTP 的 API 服务)会导致超时。我尝试了 curl、wget 和其他方法。

直到最近它都运行正常。我可以从本地计算机和其他服务器访问该 URL。

虽然看起来 API 提供商可能阻止了来自我的服务器的入站请求,但这种情况不太可能发生,因为该 API 的使用并不频繁。

调试它的最佳方法是什么?我可以检查哪些地方以查看是否不是我的服务器或网络阻止了此出站请求?

答案1

可以尝试的一件事是嗅探离开 PC 的流量(如果您有 Linux 路由器,还有路由器的流量)。您可以使用 tcpdump 来执行此操作。例如,如果您要访问的站点的 IP 地址是“1.2.3.4”,协议是 HTTP,并且您的 Internet 连接在 eth0 上,您可以尝试(以 root 身份)

tcpdump -n -i eth0 src 或 dst 1.2.3.4 和端口 80

然后转到 URL 检查数据包是否进出你的设备。如果你看到两个方向都有数据包,你可以尝试

tcpdump -A -s 1500 -n -i eth0 src 或 dst 1.2.3.4 和端口 80 | tee hit.dump

获取进入和离开你的机器(或网络)的流量的转储。

如果 TCPDump 显示数据包离开但未进入您的网络,则应仔细检查 iptables 规则(但这些不太可能是问题)。您可以使用以下命令列出这些规则

/sbin/iptables -vnL

并检查输出。

相关内容