我在 VDS 上运行一个常规的 Apache + mod_wsgi + nginx 网站,遇到了一个奇怪的问题。该网站在我的电脑上和我们经理的电脑上(他们使用不同的互联网提供商)都可以正常运行。然而,我们的一些网站用户向经理报告说,他们很长时间都无法在他们的浏览器中打开它,而同时它在我的电脑和经理的电脑上都可以正常打开。
问题是:我应该如何进行诊断(如果这个错误是我的错)以及如果我不可能(即使我想)去找有问题的用户并从他们的计算机上进行诊断,我应该寻找什么错误?
更新:感谢大家的支持!我将通过我们的经理联系有问题的客户端,与他们一起在线进行建议的测试,然后我会在必要时提供更多信息。
更新 #2:我设法联系了其中一个有问题的客户端,并使用 wireshark 执行了诊断。结果发现,问题是由 Firehol 中臭名昭著的 get-iana.sh 脚本中的一个错误引起的。结果,某个 IP 地址范围被错误地标识为保留。一切都很顺利……直到我们当地的 ISP 开始将这些 IP 地址用作他们的动态 IP 池,一些网站用户被锁定。事后看来,我一开始就不应该使用 Firehol,因为它不再维护,也不支持 IPv6。再次感谢大家的回答。
答案1
我想我会按以下顺序检查:
- 确保失败的用户确实可以通过 wireshark 或 tcpdump 访问 Web 服务器。(我敢打赌他们没有访问到,你只能怪别人了 :)
- 检查服务器中是否存在负载峰值或其他奇怪的阻塞,例如在用户失败时执行“find / -type f”之类的操作。如果有的话,也许可以卸载任何 NFS 卷。
- 通过打开往返时间的记录(在 Apache 中这将是 LogFormat %D)或使用 wireshark 查看时间是在服务器还是浏览器中消耗的,来测量 Web 服务器中的往返时间。
- 在出现故障的机器上的 Firefox 中安装 Firebug,并查看其网络流量图以了解哪些操作需要很长时间(当然,这是假设前面的步骤已经表明浏览器实际上与服务器对话)。
编辑:即使您无法访问失败的浏览器的站点,也许有远程桌面或远程协助可以帮助您?
答案2
一个好的起点是从网络层面检查问题是否再次出现。
您可以从无法访问网站的用户那里获取跟踪路由,然后将其复制并粘贴到他们的 ISP。然后,ISP 应该能够告诉您跟踪是否完成(因此是服务器问题)或它在网络上并且与他们的对等/路由有关。
跟踪路由可能会产生误导,因此将其交给 ISP 应该会得到更清晰的答案。