每个星期五从大约 22:00 开始,我们的服务器开始使用大量缓存,然后在大约两个小时后死机。请看下面的仙人掌图。
我们尝试使用https://raw.githubusercontent.com/pixelb/ps_mem/master/ps_mem.py搜索使用大量内存的过程,但它显示的只是以下内容。
...
438.0 MiB + 1.1 MiB = 439.1 MiB XXXEngine XXX 961f4dbc-3b01-0000-0080-ff115176831d xxx
520.2 MiB + 1.7 MiB = 521.9 MiB XXXEngine XXX f2ac330c-3a01-0000-0080-a2adb5561889 xxx
10.4 GiB + 829.0 KiB = 10.4 GiB java -server -Xms1G -Xmx5G -Djava.net.preferIPv4Stack=true -cp ../lib/hazelcast-3.2.2.jar:../lib/xxx.cache.jar com.hazelcast.examples.StartServer (2)
---------------------------------
28.1 GiB
=================================
这与 100G 的缓存相去甚远,我们认为 Linux 可能会使用那么多内存来缓存磁盘 I/O,因此我们过去atop
对其进行了测量。这就是我们运行时得到的atop -r atop-20140919-230002-062979000.bin -d -D (-c)
。
PID TID RDDSK WRDSK WCANCL DSK CMD 1/405
1 - 907.9G 17.0T 2.8T 97% init
6513 - 175.1G 46.1G 5.9G 1% crond
8842 - 8K 110.3G 128K 1% xxxzmuc0
6296 - 6.5G 25.1G 15.9G 0% sshd
4463 - 4668K 23.2G 0K 0% kjournald
19681 - 1835K 22.5G 22.4G 0% xxxtroker
4469 - 4728K 15.2G 0K 0% kjournald
4475 - 4716K 14.9G 0K 0% kjournald
2401 - 588K 11.4G 0K 0% kjournald
8652 - 7.0G 2.6G 1.3G 0% k6gagent
26093 - 9.5G 0K 0K 0% bpbkar
...
并atop
带有选项-c
。
PID TID S DSK COMMAND-LINE (horizontal scroll with <- and -> keys) 1/405
1 - S 97% init [3]
6513 - S 1% crond
8842 - S 1% xxzmuc0 -m XXX
6296 - S 0% /usr/sbin/sshd
4463 - S 0% kjournald
19681 - S 0% xxxtroker XXX
4469 - S 0% kjournald
4475 - S 0% kjournald
2401 - S 0% kjournald
8652 - S 0% /opt/IBM/ITM/lx8266/6g/bin/k6gagent
26093 - S 0% bpbkar -r 2678400 -ru root -dt 0 -to 0 -clnt ...
...
所以我可以看到init
已经将 17 TB 的数据写入磁盘,这看起来很多。但是我不知道如何找出造成这种情况的原因。我认为 Linux 正在使用缓存来加速磁盘操作,但在进程需要它时将其归还,并且不可能用缓存杀死服务器。
我们正在使用“Red Hat Enterprise Linux Server release 5.5 (Tikanga)”Linux delirium 2.6.18-194.26.1.el5 #1 SMP Fri Oct 29 14:21:16 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux。
我们应该(下一步)做什么来找出问题所在?
查看平板实用程序。您是否还确定,它们不是围绕该时间范围在您的系统上安排的 I/O 密集型 cron 作业(即 mlocate/updatedb..)?
我看到 bpbkar 也很活跃,我会看看那个过程。它是 Symantec NetBackup 的一部分,请检查您在出现问题时是否正在运行备份。禁用它并查看在没有计划备份时是否再次出现问题。
如果 bpbkar 是有罪的进程,您应该启用完整的日志记录以找出导致此问题的原因。一定要为其安装最新的更新,因为它们总是能解决一大堆问题。