最近,公司有几台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的情况并保存到文件。


这样的话,再次出现内存不够分配的时候,便于我们后期追查现场。