服务器内存不足,并开始终止进程,使用最多的应用程序消耗的总 PSS 内存(驻留内存中使用的实际内存)小于系统上的总内存,我想知道这些额外的内存使用情况发生在哪里?有什么想法吗?以下是 meminfo、smem、free -m 的输出,
任何建议都将不胜感激???
cat /proc/meminfo
MemTotal: 5976008 kB
MemFree: 138768 kB
Buffers: 2292 kB
Cached: 57444 kB
SwapCached: 85980 kB
Active: 324332 kB
Inactive: 121836 kB
Active(anon): 309264 kB
Inactive(anon): 77992 kB
Active(file): 15068 kB
Inactive(file): 43844 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 8159224 kB
SwapFree: 6836184 kB
Dirty: 572 kB
Writeback: 0 kB
AnonPages: 372160 kB
Mapped: 13976 kB
Shmem: 472 kB
Slab: 328216 kB
SReclaimable: 92544 kB
SUnreclaim: 235672 kB
KernelStack: 4824 kB
PageTables: 14732 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 8159224 kB
Committed_AS: 4940480 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 102424 kB
VmallocChunk: 34359584392 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 6384 kB
DirectMap2M: 2080768 kB
DirectMap1G: 4194304 kB
SMEM usage:
30971 root python /usr/local/scripts/s 2432 660 860 1204
23296 root /usr/bin/spamd -d -c -m5 -H 58296 1460 1564 1868
2763 ufc csrv -c /home/ufc/ufclient/ 116000 12768 12792 13084
55819 root /usr/bin/python /bin/smem 0 22356 22988 24364
2101 root clamd 189228 41224 41280 41700
32914 root /opt/safesquid/safesquid/sa 831120 5808 138619 271844
[root@server sysadmin]# free -m
total used free shared buffers cached
Mem: 5835 5695 140 0 1 19
-/+ buffers/cache: 5674 161
Swap: 7967 1315 6652
更新:
服务器现在恢复正常,但内存使用量呈指数级增长,直到 7 小时后应用程序被终止
Out of memory: Kill process 14585 (safesquid) score 81 or sacrifice child
Killed process 16141, UID 500, (python) total-vm:79284kB, anon-rss:2656kB, file-rss:680kB
top - 21:58:16 up 16 days, 11:10, 1 user, load average: 0.46, 0.74,
0.78 Tasks: 243 total, 1 running, 242 sleeping, 0 stopped, 0 zombie Cpu(s): 5.7%us, 5.8%sy, 0.0%ni, 88.3%id, 0.1%wa, 0.0%hi,
0.1%si, 0.0%st Mem: 5976008k total, 5830648k used, 145360k free, 35724k buffers Swap: 8159224k total, 445384k used, 7713840k free, 3684540k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4960 ssquid 20 0 1000m 534m 3068 S 20.6 9.2 90:19.40 safesquid
2101 clamav 20 0 4153m 85m 1672 S 2.0 1.5 536:42.26 clamd
23333 root 20 0 244m 50m 1940 S 0.0 0.9 2:10.84 spamd
2763 ufc 20 0 1628m 32m 25m S 1.0 0.5 399:12.74 csrv
61303 root 20 0 97876 4380 3304 S 0.0 0.1 0:00.28 sshd
23296 root 20 0 227m 3424 928 S 0.0 0.1 0:07.87 spamd
该盒子正在运行规则空间、clam 和 safesquid 代理。
在内存图中,当应用程序被终止时,内存出现大幅下降,然后我重新启动了 safesquid 服务……
答案1
@David Schwartz:我确信内核 OOM 终止程序会终止该进程。是的,我们需要知道要终止哪个进程。
我非常确定被终止的进程在某种程度上行为不当(或崩溃),因此它占用了大部分可用内存,此时内核的 OOM 终止程序决定将其终止。例如,这种行为在十年前非常猖獗(就我而言),当时 mozilla/firefox 比现在更容易泄漏内存。它会使用越来越多的内存,然后突然就消失了……你懂的。
答案2
嗯,具体细节如下:
无论被终止的进程是什么,都可能有内存泄漏。您的图表确实表明了这种情况。您应该更多地关注紫线而不是黄线。黄色实际上也是空闲内存。
至于进程不使用总内存,我不清楚你在说什么,因为你没有告诉我机器中有多少内存。然而,内核和诸如页表,因此您现有的全部硬件内存无法供应用程序使用。
就你的情况而言,显示的总内存为 5.7G,这意味着你可能安装了 6G。对 meminfo 的非常详尽的解释可能会对您有所帮助,但总结一下就是您的大幅下降是由于内存泄漏的应用程序需要修复或至少定期重启。