尽管用户空间的内存使用率似乎很低,但服务器似乎几乎没有可用内存

尽管用户空间的内存使用率似乎很低,但服务器似乎几乎没有可用内存

我管理的一台 Linux 服务器最近出现了严重的性能下降,每次重启几周后尤其明显。特别是分配给该机器的 Jenkins 作业在重启几周后开始超时,此时所有执行都很缓慢,例如 ssh 需要 10-15 秒才能连接到机器。

该命令的输出uname

root@_____:~# uname -a
Linux _____ 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

查看vmstatfree发现机器的几乎所有物理内存都处于使用状态,只有很少一部分用于缓存,并且只有很少一部分用于交换。

root@_____:~# free -m
         total       used       free     shared    buffers     cached
Mem:          3865       3686        179          0         12        282
-/+ buffers/cache:       3391        473
Swap:         4102        504       3597

root@_____:~# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
0  2 953288 217960   6344 232268   41   35   111   106    0    0 42  3 52  3  0

top然而,报告称,即使是系统中最大的内存消耗者也只使用了可用内存的个位数百分比

root@moose:~# ps aux --sort -rss
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
regress+  6766 13.1  6.1 1894448 245188 ?      Sl   10:10   5:25 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java _____
regress+ 22796  1.1  3.1 2552832 126600 ?      Sl   Apr07  11:17 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java _____
regress+ 17199  0.6  0.5 188952 23560 ?        Dl   10:51   0:00 _____
regress+ 23497  0.5  0.5 3057724 21764 ?       Sl   06:26   1:29 java _____

我目前的理论是某种资源泄漏锁定了大量物理内存,导致系统不稳定并变慢。这可能是导致性能下降的原因吗?如果是,我该如何最好地解决这个问题?如果不是,那么导致问题的另一个可能原因是什么?

答案1

是否加载了非标准内核模块?内核分配可能占用了内存。

相关内容