另一起問題是24G內存的系統,空閑內存已經不到50M
1. 確認該系統的版本是64位
# uname -a
Linux gxgd-nms-app 2.6.18-194.el5xen #1 SMP Tue Mar 16 22:01:26 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
|
2. 用ps查看各進程的內存,大約就占用了4G, 絕大部分內存都是被Page Cache所占用。Linux內核的策略是最大程度的利用內存cache 文件系統的數據,提高IO速度,雖然在機制上是有進程需要更大的內存時,會自動釋放Page Cache,但不排除釋放不及時或者釋放的內存由於存在碎片不滿足進程的內存需求。
所以我們需要一個方法,能夠限定PageCache的上限。
Linux 提供了這樣一個參數min_free_kbytes,用來確定系統開始回收內存的閥值,控制系統的空閑內存。值越高,內核越早開始回收內存,空閑內存越高。
[root@zyite-app01 root]# cat /proc/sys/vm/min_free_kbytes
163840
echo 963840 > /proc/sys/vm/min_free_kbytes
|
其他可選的臨時解決方法:
關閉oom-killer
cat /proc/sys/vm/oom-kill
echo "0" > /proc/sys/vm/oom-kill
vi /etc/sysctl.conf
vm.oom-kill = 0
echo "0" > /proc/sys/vm/oom-kill
vi /etc/sysctl.conf
vm.oom-kill = 0
2. 清空cache (可選)
echo 1 > /proc/sys/vm/drop_caches
original link:http://www.cnblogs.com/itfriend/archive/2011/12/14/2287160.html