web-dev-qa-db-ja.com

サーバーのメモリが不足しています

enter image description hereサーバーのメモリが不足し、プロセスの強制終了が開始されるポイントに到達すると、アプリケーションを使用してトップが消費する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

ボックスはrulespace、clam、safesquidプロキシを実行しています。

メモリグラフでは、アプリケーションが強制終了され、safesquidサービスを再起動したときに大きな低下が見られます...

1
krisdigitx

@David Schwartz:カーネルのOOMキラーがプロセスを強制終了すると確信しています。そして、はい、どのプロセスが強制終了されているかを知る必要があります。

強制終了されているプロセスが何らかの形で誤動作している(またはクラッシュしている)と確信しています。その結果、使用可能なメモリのほとんどを使い果たしており、その時点でカーネルのOOMキラーがプロセスを終了することを決定します。たとえば、この種の動作は、mozilla/firefoxが現在よりもメモリリークを起こしやすい10年ほど前に(私の場合は)横行していました。それはどんどん使用していき、突然消えてしまいました...あなたはその考えを理解します。

1
aseq

さて、ここに内訳があります:

強制終了されるプロセスが何であれ、おそらくメモリリークが発生します。あなたのグラフは確かにそれをケースのように見せます。黄色よりも紫色の線に焦点を合わせる必要があります。 黄色は実際には空きメモリでもあります

合計メモリを使用していないプロセスについては、マシンにどれだけの容量があるかを教えていないため、何を言っているのか不明です。ただし、カーネルでは常に一定量のメモリが使用され、 ページテーブル などが使用されるため、アプリケーションはハードウェアメモリ全体を使用できません。

あなたの場合、合計メモリショーは5.7Gであり、おそらく6Gがインストールされていることを意味します。 meminfoの非常に徹底的な説明 はあなたを助けるかもしれません、しかし要約はあなたの大きな低下は修正されるか少なくとも定期的に再起動される必要があるメモリリークアプリから来るということです。

1
Jeff Ferland