我管理的网站今天突然开始运行缓慢。我试图找出瓶颈在哪里。我创建了一个 14kb 的文本文件,这需要 5 秒才能在浏览器中打开!我确信问题不在于我的互联网连接 - 例如,我可以很好地观看 youtube。
如果我访问局域网上的 14kb 文件,则该页面需要 6 毫秒才能打开。这让我认为问题不在于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)
谁能帮我诊断这个问题?我对运行网络服务器的 ubuntu 机器具有完全的 root 访问权限。该网站是从 apache 和 php 生成的。
更多信息
从那以后,我一直在家并回来工作。奇怪的是,该网站在我家运行良好!所以这是当前状态:
- 在家里:工作正常
- 在 lan2 上工作(与服务器不同的 lan):非常慢
- 在 lan1 上工作(与服务器相同的局域网):工作正常
问题可能出在工作 lan2 上的 dns 上。也许 isp 正在缓存或过滤请求?
跟随 traceroute 引导...
- 在工作 lan1 上当然只有一跳
- 在工作 lan2 上,使用 icmp echos (pings) 的跟踪路由未在 60 跳内完成(条目 9 到 60 都是 * * *),但使用 tcp syn 数据包的跟踪路由在 12 跳内完成
- 我家的 traceroute 使用 icmp echos 也没有通过,但它使用 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信息中搜索一些术语,也许这会导致某个地方。