我管理的网站今天突然开始运行缓慢。我想找出瓶颈在哪里。我创建了一个 14kb 的文本文件,在浏览器中打开它需要 5 秒钟!我相信问题不在我的互联网连接上 - 例如,我可以正常观看 YouTube。
如果我在局域网上访问 14kb 文件,则页面需要 6ms 才能打开。这让我认为问题不在于 apache。
但是,该网站还使用 mysql,当我打开一个以表格形式显示数据的页面时,需要很长时间 - 比如 10 分钟或更长时间。在局域网上,它会立即打开。当页面通过互联网加载时,我检查了完整的进程列表,发现有些查询需要很长时间:
mysql> show full processlist;
+------+------+-----------+------+---------+------+-------+-----------------------+
| Id | User | Host | db | Command | Time | State | Info |
+------+------+-----------+------+---------+------+-------+-----------------------+
| xxxx | root | localhost | fms | Sleep | 307 | | NULL |
| yyyy | root | localhost | NULL | Query | 0 | NULL | show full processlist |
+------+------+-----------+------+---------+------+-------+-----------------------+
2 rows in set (0.00 sec)
有人能帮我诊断这个问题吗?我对运行 Web 服务器的 ubuntu 机器有完全的 root 访问权限。该网站是由 apache 和 php 生成的。
更多信息
我已经回家并回来工作了。奇怪的是,网站在我家运行正常!以下是当前状态:
- 在家:效果很好
- 在 lan2 上工作(与服务器不同的 lan):速度非常慢
- 在 lan1 上工作(与服务器相同的 lan):工作正常
问题可能出在工作局域网 2 上的 DNS 上。也许 ISP 正在缓存或过滤请求?
按照跟踪路由的指引...
- 在工作局域网 1 上当然只有一个跳
- 在工作局域网 2 上,使用 ICMP 回显 (ping) 的跟踪路由未在 60 跳内完成(条目 9 到 60 都是 * * *),但使用 TCP Syn 数据包的跟踪路由在 12 跳内完成
- 从我家出发的 traceroute 也无法使用 icmp echo 成功,但是使用 tcp syn 数据包经过 9 个跳数就完成了。
看起来问题完全局限于 lan2 - 这表明要么存在某些配置问题(例如,仅为该网站缓存了错误的 DNS 条目,或者某些路由可能陷入了循环),要么某些硬件已损坏。欢迎就此问题提出所有调试建议。
来自 wireshark 的更多信息
我注意到页面连接相对较快,但需要很长时间才能完成加载。我在打开页面时还运行了 wireshark,发现了很多(数百个)以下数据包:
source dest protocol info
website work pc on lan2 TCP [TCP Retransmission] [TCP segment of a reassembled PDU]
work pc on lan2 website TCP 62783 > https [ACK] Seq=667 Ack=26435 Win=260 Len=0
website work pc on lan2 TCP [TCP Previous segment not captured] [TCP segment of a reassembled PDU]
work pc on lan2 website TCP [TCP Dup ACK 192#1] 62783 > https [ACK] Seq=667 Ack=26435 Win=260 Len=0 SLE=xxxxx SRE=xxxxx
website work pc on lan2 TCP [TCP segment of a reassembled PDU]
我想知道问题是否出在 lan2 上缓存的 SSL 证书上?现在真是束手无策了……我要去谷歌搜索 wireshark 信息中的一些术语,也许会找到一些线索。
答案1
由于 LAN2 上的跟踪路由未完成,因此可能是硬件故障。请检查电缆故障、服务灯闪烁的路由器/交换机,并更换它们。
答案2
我找到了一台插入了两个局域网的 Windows PC。用户主要访问问题中讨论的网站,因此我将这台 PC 从局域网 2 上拔下,以便它能够直接与局域网 1 上的网站通信。完成此操作后,局域网 2 上所有其他 PC 都开始正常访问网站 - 连接和加载现在恢复到通常的快速速度。我猜这台 PC 路由了一半的网站数据包,而其余的则通过互联网传输,也许它们没有在浏览器上重新组装。
我不太确定是否确实如此,但我确信当我断开这台电脑与 LAN2 的连接时问题就解决了。
显然,根据我发布的信息,没有办法猜出答案,但还是感谢所有提出建议的人。