服务器高频读取,导致连 ssh 都连接不上

之前服务器有时候 ssh 连接不上,我以为是网络问题。因为毕竟连搭建在上面的网站都访问不了,但是后来测试开梯子,还是访问不了,又感觉不像是网络问题。

而最近我终于发现问题所在了,是系统磁盘高频读取导致的。我通过腾讯云的后台实时监控,发现在「系统盘 IO」这里,读取能达到 100 多 MB 每秒,并且是一条直线的。

而平时服务器正常时的监控图表是这样的

Tencent-cloud-monitoring-shadow

而且读取达到 100 多 MB 时,左侧的带宽使用基本是 0。那么应该不是在往外传东西。其实就算是在往外传,也不可能读取达到这么高。因为这轻量应用服务器的带宽是(峰值带宽:30Mbps)

Tencent-cloud-monitoring-io-shadow

那导致 io 这么高的原因是什么呢?其实我也没查到,因为这时我压根没法 ssh 连接上去,查看不了。

不过我搜索一下,发现也有其他人遇到这种问题。

阿里云 系统磁盘总读BPS 突然增长很高,导致网站502 Bad Gateway

我猜问题应该是内存不够用导致的,使用 htop 查看一下,平时的内存使用率就很高了。

CPU[|||||||                  19.2%]   Tasks: 81, 342 thr; 1 running
Mem[|||||||||||||||||||||786M/970M] Load average: 0.12 0.13 0.10
Swp[ 0K/0K] Uptime: 2 days, 00:03:35

遇到这种情况呢,其实重启一下服务器,是可以解决问题的,但是使用一段时间后又会复发。而且每次都要登录腾讯云后台去重启,也挺麻烦的。

目前我强制重启之后,连接上服务器,然后添加 1GB 的 swap 交换文件。试试看这样能否解决问题吧。

CPU[|||||                    12.6%]   Tasks: 83, 332 thr; 1 running
Mem[|||||||||||||||||||||387M/970M] Load average: 0.17 0.08 0.08
Swp[|||||||||||| 397M/1024M] Uptime: 2 days, 06:59:42

问题好像解决了,运行了两天多,没出现连接不上的情况。添加 swap 之后,内存有一部分分摊到 swp 里。看来内存小的服务器,开启 swap 还是挺有必要的。