系统卡死看内存一直占满(used)过高的误解
最近个人负责的系统总是卡死,查日志有内存溢出的情况,网上搜索总结下:
1、第一种情况,装日志文件的空间满了,怎么点都不会打日志,就以为系统挂了,可用df -h看看具体使用情况。
2、第二种就是内存不断的增加,某时刻要执行的功能需要的内存很多,但是系统无法一下释放那么多空间就会内存溢出。 最初自己的处理办法就是万能重启。
后来用echo 3 > /proc/sys/vm/drop_caches 这个方法释放了内存,但是这个方法的影响还在学习补充中。
刚开始以为used过多就会有问题,其实不然,网上找了点资料学习了下。
资料:
在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是Linux内存管理的一个优秀特性,在这方 面,区别于 Windows的内存管理。主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Linux系统的数据访问性能。
Linux 的这一特性,主要是利用空闲的物理内存,划分出一部份空间,做为 cache 和 buffers ,以此提高数据访问性能。
Linux 优先使用物理内存,当物理内存还有空闲时,linux是不会施放内存的,即时占用内存的程序已经被关闭了(这部分内存就用来做缓存了)。也就是说,即时你有2G的内存,用过一段时间后,也会被占满。这样做的好处是,启动那些刚开启过的程序、或是读取刚存取过得数据会比较快,对于服务器很有好处。
一路成长,记录分享,内存调优还在学习中,后续继续记录。