最近,公司有幾臺java服務器經常出現can not allocate memory 的情況。導致SSH登錄失敗。
因此,有必要做點什么。
我們可以使用linux-ftools查看Linux 的cached里面有哪些內容(工具:?https://code.google.com/p/linux-ftools/):
#!/bin/bash
tar xf linux-ftools.tar.gz -C ./
cd linux-ftools/ && ./configure && make && make install
安裝完成后,在/usr/local/bin 下生成3個文件 linux-fadvise 、linux-fallocate 、linux-fincore
常用命令:
linux-fincore ?--help?
例子:查看/tmp 目錄下緩存了哪些文件命令:
linux-fincore --pages=false --summarize --only-cached /tmp/*?
這樣的話,如果經常出現can not allocate memory的情況,我們可以先配置個計劃任務,使用linux-fincore定期獲取某個目錄(例如java程序每次都把文件緩存到/opt/xxx/ 這個目錄下)的cached的情況并保存到文件。
這樣的話,再次出現內存不夠分配的時候,便于我們后期追查現場。