Я предполагаю, что есть некоторая утечка памяти, и память не освобождается. Есть ли хорошие способы узнать, какой процесс и почему происходит утечка памяти?
Единственное временное решение - перезапустить сервер. Но через несколько дней использование памяти растет и растет, а затем сервер сильно замедляется, и мне приходится делать еще один перезапуск.
Например, проверка free -m:
             total       used       free     shared    buffers     cached
Mem:          2005       1989         15          0          2        126
-/+ buffers/cache:       1861        144
Swap:         2004       1494        510
Дело в том, что это использование мало что меняет. И такое использование памяти либо замораживается, либо увеличивается, но не меньше.
Кто-нибудь знает какие-либо хорошие практики, чтобы точно определить причину утечки памяти?
Топ, упорядоченный по использованной памяти, показывает это:
top - 16:58:40 up  6:00,  1 user,  load average: 0.10, 0.08, 0.07
Tasks: 136 total,   1 running, 135 sleeping,   0 stopped,   0 zombie
Cpu(s): 26.2%us,  1.0%sy,  0.0%ni, 72.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   2053476k total,  2036380k used,    17096k free,    39272k buffers
Swap:  2053112k total,    13348k used,  2039764k free,   924372k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
 1529 oerp      20   0  919m 419m 8100 S 19.9 20.9  17:44.49 python             
 1768 postgres  20   0  342m 161m 137m S  0.0  8.1   0:27.28 postgres           
 1775 postgres  20   0  334m 155m 137m S  0.0  7.8   0:14.05 postgres           
 1751 postgres  20   0  333m 152m 138m S  0.0  7.6   0:26.56 postgres           
 1779 postgres  20   0  330m 150m 136m S  0.0  7.5   0:13.73 postgres           
 1758 postgres  20   0  329m 149m 137m S  0.0  7.5   0:19.89 postgres           
 1742 postgres  20   0  330m 149m 137m S  0.0  7.5   0:10.19 postgres           
 1769 postgres  20   0  329m 149m 138m S  0.0  7.4   0:55.47 postgres           
 1760 postgres  20   0  329m 149m 137m S  0.0  7.4   0:16.52 postgres           
 1772 postgres  20   0  328m 148m 136m S  0.0  7.4   0:18.93 postgres           
 1764 postgres  20   0  328m 148m 137m S  0.0  7.4   0:17.72 postgres           
 1759 postgres  20   0  329m 148m 136m S  0.0  7.4   0:21.15 postgres           
 1757 postgres  20   0  330m 148m 136m S  5.6  7.4   0:17.73 postgres           
 1766 postgres  20   0  327m 148m 138m S  0.3  7.4   0:25.07 postgres           
 1762 postgres  20   0  328m 148m 136m S  0.0  7.4   0:17.91 postgres           
 1776 postgres  20   0  329m 147m 137m S  0.0  7.4   0:21.30 postgres           
 1770 postgres  20   0  328m 147m 136m S  0.0  7.4   0:16.01 postgres
Понятно, что Python и PostgreSQL съедают всю память, но как я могу точно указать причину отказа от освобождения памяти (много разных операций, которые выполняют Python и PostgreSQl)?
используя ps aux:
Этот процесс использует большую часть памяти:
oerp      1529  4.9 20.9 916984 429332 ?       Sl   10:58  17:55 /opt/odoo/venv/bin/python /opt/odoo/odoo/openerp-server --config=/etc/odoo-server.conf --no-database-list
Но если вы объедините все процессы, как это (их много)
postgres  1742  0.0  7.4 338268 153140 ?       Ss   10:59   0:10 postgres: oerp nodbaltic [local] idle 
Тогда это занимает большую часть памяти.
Это нормально для postgresql, чтобы иметь много пустых процессов, которые занимают такой огромный объем памяти?
cat /proc/meminfo:
MemTotal:        2053476 kB
MemFree:           20312 kB
Buffers:           38944 kB
Cached:           926480 kB
SwapCached:         1196 kB
Active:          1431788 kB
Inactive:         490424 kB
Active(anon):     824712 kB
Inactive(anon):   276456 kB
Active(file):     607076 kB
Inactive(file):   213968 kB
Unevictable:        3884 kB
Mlocked:            3884 kB
SwapTotal:       2053112 kB
SwapFree:        2039340 kB
Dirty:              4144 kB
Writeback:             0 kB
AnonPages:        959108 kB
Mapped:           164144 kB
Shmem:            142332 kB
Slab:              58796 kB
SReclaimable:      38440 kB
SUnreclaim:        20356 kB
KernelStack:        1728 kB
PageTables:        28340 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3079848 kB
Committed_AS:    2131992 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      281432 kB
VmallocChunk:   34359446164 kB
HardwareCorrupted:     0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       10240 kB
DirectMap2M:     2086912 kB
PS Ох, и сервер работает на виртуальной машине, если это имеет значение.
