【Linux】内存优化检查主要工具free top vmstat

来源:互联网 发布:鹅绒 鸭绒 知乎 编辑:程序博客网 时间:2024/05/04 09:03
如何判断linux服务器是否需要添加内存!

无意间看到这样一篇文章,转载给大家,自己也做了一些实践,也许有的童鞋无法使用这些命令,那么,就需要自己学会搭建虚拟机,安装Linux系统来玩玩了,有兴趣的可以多尝试,毕竟性能测试是需要懂操作系统的,一知半解可是不行哦



一、内存优化检查主要工具:
free
top
vmstat

二:和内存相关的几个指标:
1、        平均负载
2、        i/o

三、如何判断linux服务器是否需要添加内存:

关键察看是否swap里面参数的si和so参数是否为0,如果为0说明内存够用,一旦不为0,说明内存短缺,所以si和so有非常多的页交换,

备注:si是swap Page-ins so是swap Page-out
guyh@BJ-DB1:~> vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
1  1 3757520  16404 347312 2876632   83   39   300    92    0     0  4  6 80 11
0  0 3757500  16148 347992 2876940   12    0   132   124  554  1137  6  5 82  7
0  0 3757572  16876 348652 2876196    0   72   114   203  500  1073  5  8 80  7

例1:主数据库,负载很高,内存紧张:

vmstat检测结果:
guyh@BJ-DB1:~> vmstat 5 100
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
3  0 4208280  12568 297628 2409512   83   39   300    92    0     0  4  6 80 11
0  0 4208312  14000 299104 2410276   14   62   288   206  602  1232  5  7 75 13
0  2 4202480  14108 300084 2413108  957   37  1237   122  466  1010  4 10 59 27
3  1 4197724  14852 299836 2418264 1007  100  1089   213  523  1117  6  6 75 13
0  0 4197648  13836 301448 2419716   48   17   371   139  398   989  5  9 74 12
0  0 4197576  16528 301592 2420356   38   18    41   230  326   834  3 10 81  6

free检测结果:
guyh@BJ-DB1:~> free -m
             total       used       free     shared    buffers     cached
Mem:          7663       7646         16          0        303       2391
-/+ buffers/cache:       4951       2711
Swap:         8193       4070       4123
guyh@BJ-DB1:~> 


top检测结果:
guyh@BJ-DB1:~> top
top - 11:43:28 up 172 days, 21:14,  3 users,  load average: 0.67, 0.86, 2.22
Tasks: 666 total,   4 running, 661 sleeping,   0 stopped,   1 zombie
Cpu(s):  4.8% us,  6.2% sy,  0.0% ni, 81.8% id,  3.1% wa,  0.1% hi,  4.1% si
Mem:   7846956k total,  7835264k used,    11692k free,   313408k buffers
Swap:  8390648k total,  4158628k used,  4232020k free,  2457368k cached

例2:备数据库,负载很低,内存空闲:

vmstat检测结果:
guyh@BJ-DB2:~> vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
0  0  83048  77540 697784 1891272    6    4    63    29    1     0  1  1 95  3
0  1  83048  76988 697784 1891272    0    0     1    32   15   200  0  0 98  1
0  0  83048  77592 697784 1891272    0    0     1    74   17   111  0  0 99  1
0  0  83048  76964 697784 1891272    0    0     1    29   17   203  1  1 98  1
0  0  83048  77524 697784 1891272    0    0     1    61   15   116  0  0 99  1
guyh@BJ-DB2:~> 

free检测结果:
guyh@BJ-DB2:~> free -m
             total       used       free     shared    buffers     cached
Mem:          7663       7587         75          0        681       1846
-/+ buffers/cache:       5058       2604
Swap:         8193         81       8112

top检测结果:
guyh@BJ-DB2:~> top
top - 12:32:03 up 140 days, 15:11,  1 user,  load average: 0.08, 0.08, 0.02
Tasks: 107 total,   1 running, 105 sleeping,   0 stopped,   1 zombie
Cpu(s):  0.0% us,  0.0% sy,  0.0% ni, 99.1% id,  0.9% wa,  0.0% hi,  0.0% si
Mem:   7846956k total,  7770396k used,    76560k free,   697784k buffers
Swap:  8390648k total,    83048k used,  8307600k free,  1891272k cached

2个示例对比结果:用top和free查看结果发现,db1(16MB)和db2(75MB)的内存空闲量都差不多,但是2台服务器的负载确有很大的差距,只能通过vmstat的si/so检测,发现是否需要添加内存。
总结:linux内存没有一个工具的能够准确确定内存的使用量,只能使用vmstat的 si和so参数来判断。
0 0