转自 网络
Linux/Unix与windows在管理内存的方式上是不一样的。它的管理方式是充分的利用系统的内存,而windows则是无论使用多大的内存都要使用一定的虚拟内存(linux中swap)。
所以说即便是一个刚装上不久的linux系统,内存使用量达到90%,也很正常。但是,这个内存占用量不会达到100%的,因为当达到一个占用量的时候,就会启用swap(虚拟内存)。
(关于为何会使用高的解释:
a、linux把剩余的内存都用做磁盘缓存了,这样可以减少硬盘读写次数,Linux在磁盘操作上的速度是要比windows快的。这样做并不会影响系统速度。换句话说就是Linux 是先占用,然后再慢慢使用,windows是要用多少就占用多少。Linux 不会让内存空着的,程序用不了就当缓存用。
b、桌面追求的是反应速度,服务器追求的是吞吐量,两者是有差别的,linux侧重后者。特别体现在任务调度、内存管理。从桌面的角度,尽量要保留一定的空闲内存(如果不够,先将后台进程swap出去),当用户要打开新程序的时候,可以迅速反应。桌面常用的模块预先驻留内存。而linux是著名的lazy的方式。)
Linux/Unix系统是非常稳健的,虽然内存占用显示90%以上,但依然可保证365天以上无须重启。对于Linux系统,评估其压力的主要指标是最近5分钟的负载指数。比如用top去看,可以看到“2.20,2.27,1.81”这样的数字。
分别表示5分钟内的、10分钟内的、15分钟内排队的进程数。只要第一个数字即5分钟内的负载不大于5,系统就是健康的,不用做任何维护
如果这个数字大于了5,那么通常系统速度就会变慢,一般有如下几种可能:
1) 有程序占用大量CPU,使用top命令来检查(看看是否有java程序锁死之类的故障)
2) 有程序占用大量内存,使得内存真正不够用了(这个才是真正需要加内存的时候)
比如由于MySQL(和PHP搭配之最佳组合)在较大负载下运行容量为GB级别的数据库导致内存不够用,需要给服务器插入更多物理内存
3)磁盘系统读写故障,IO吞吐错误造成CPU负载上升,需要光盘引导进入单用户模式扫描修复磁盘,修不好就只能更换新硬盘了
因此,对于Linux/Unix系统内存占用的百分比,无须过于关心,一般检查系统负载参数即可。