我有一台机器运行 Debian 很长一段时间(可能是 7 年)24/7。两周前,我决定移动服务器的位置,并升级到 Debian Jessie(正在运行 wheezy)。
一切都很顺利,除了每 5 或 6 分钟服务器在大约 20 秒内没有响应任何连接。
我创建了一个脚本来检查何时发生,这是时间:
2017-01-12 16:16:05 TIMEOUT!
2017-01-12 16:21:49 TIMEOUT!
2017-01-12 16:27:32 TIMEOUT!
2017-01-12 16:33:13 TIMEOUT!
2017-01-12 16:39:01 TIMEOUT!
...
2017-01-12 17:07:59 TIMEOUT!
2017-01-12 17:13:47 TIMEOUT!
2017-01-12 17:19:25 TIMEOUT!
我在服务器上运行了一个虚拟机,数据包可以很好地到达它,没有任何延迟。我已经在服务器上测试了不同的端口,例如 80、443、9000 等,并且都超时。在服务器上,例如运行 ssh,如果我在超时期间尝试一个命令,例如输入 3 次“ls”,在它恢复后它将收到 3 个“ls”并执行。
我检查了服务器上的日志,但找不到任何相关信息。
编辑:让 ping 运行不会显示超时。
EDIT2:好的,另一个奇怪的事情。访问服务器上的 ssh,并在超时开始发生时运行 ping 8.8.8.8(或可能输出文本的任何命令),如果我按 CTRL+C 取消它,我仍然可以毫无问题地查看 ping 的文本输出,我看到了 ping 的 min/avg/max 状态,但如果我键入命令(例如“ls”),它会等到服务器再次可用以显示文件列表。
EDIT3:所以,它可能与磁盘有关。sda 是三星 SSD 840 Pro 120GB。
iostats 显示以下内容:
正常行为:
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 2.00 0.00 20.00 20.00 0.00 0.00 0.00 0.00 0.00 0.00
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-0 0.00 0.00 0.00 2.00 0.00 20.00 20.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-1 0.00 0.00 0.00 2.00 0.00 20.00 20.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
超时行为:
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 136.00 0.00 69124.00 1016.53 127.69 1053.93 0.00 1053.93 7.35 100.00
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdc 0.00 16.00 0.00 18.50 0.00 540.00 58.38 0.10 5.51 0.00 5.51 1.19 2.20
dm-0 0.00 0.00 0.00 1.00 0.00 4.00 8.00 521.34 363490.00 0.00 363490.00 1000.00 100.00
dm-1 0.00 0.00 0.00 1.00 0.00 4.00 8.00 521.35 363492.00 0.00 363492.00 1000.00 100.00
dm-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
在使用iostat和iotop进行诊断后,我发现问题出在 redis-server 中,它将数据库持久化到磁盘中,并且由于数据库的增长,由于某种原因写入磁盘阻塞了网络流量,这就是超时的原因(大量写入磁盘)。
因为我不需要磁盘持久性,所以我禁用了它,现在又可以正常工作了,但我不知道为什么 redis-server 会这样。