红联Linux门户
Linux帮助

8G内存全部耗尽的缘由

发布时间:2006-12-12 10:00:18来源:红联作者:flycocoon
昨天看到一服务器top信息如下:


Mem: 7734988k av, 7024906k used, 710082k free, 0k shrd, 47100k buff
273744k active, 113956k inactive
Swap: 16579072k av, 0k used, 16579072k free 4219976k cached


系统:Red Flag Advanced Server release 4.1

现象:服务器是一个网站的应用,程序是基于JAVA的,出现上面情况后,java进程死掉。前台用户无法访问,
内核信息:uname -a
Linux localhost 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 EDT 2004 i686 athlon i386 GNU/Linux


此时服务器执行每个命令都巨慢,同时系统kswapd进程不停的出现,每次出现都占用CPU 90%以上。但是却不见kpiod进程占用CPU。


个人分析认为:

系统应用耗用了很多的物理内存,可以看到,文件系统 cache 的内存使用量此时是4219976k,有4G多的文件系统 cache使用,这么大的cache肯定会造成内存的耗尽。

内存的大量使用,必然导致系统出现kswapd进程的调度,kpiod负责页在虚拟内存和物理内存之间换入换出,然而,kswapd的出现再次耗用CPU资源,加重了系统负担。


此时如果输入命令执行的话,系统就没有内存分配给他来使用,那么执行命令很慢,也是正常的。

最终导致服务器资源耗尽,前台无法访问。


我们从系统的角度分析,如果解决问题,一方面要从系统版本入手,看是否有内存泄漏,或者是内核的BUG,

另外一方面系统安装配置是否合理,8G的物理内存,其实没有必要设置16G的swap,太大的swap没有什么好处,可以降低到2G即可。
文章评论

共有 0 条评论