Eu tenho algo meio estranho acontecendo com a memória.
Eu tenho servidores Ubuntu 14.04 com o Zimbra 8.6 com kernel (para este) 3.13.0-37-genérico. Mas eu já vi o problema com outros kernels.
Memória e troca estão cheias:
$ free
total used free shared buffers cached
Mem: 6112624 5991208 121416 88 4752 79224
-/+ buffers/cache: 5907232 205392
Swap: 3905532 3624768 280764
Eu achei que Zimbra estava comendo toda a minha memória, mas, estranhamente, não parece:
# ps -A --sort -rss -o comm,pmem | head -n 11
COMMAND %MEM
java 10.6
clamd 4.7
mysqld 3.0
java 2.0
slapd 1.2
/opt/zimbra/ama 1.1
/opt/zimbra/ama 1.0
/opt/zimbra/ama 1.0
/opt/zimbra/ama 1.0
/opt/zimbra/ama 0.9
Todo o meu processo ocupa metade da memória. Meus buffers e cache não levam quase nada.
Quando eu paro o Zimbra, ainda há 3.5Gb:
# ps -A --sort -rss -o comm,pmem | head -n 12
COMMAND %MEM
bash 0.0
bash 0.0
bash 0.0
sudo 0.0
rsyslogd 0.0
http 0.0
http 0.0
htop 0.0
init 0.0
ps 0.0
Após uma reinicialização, menos de 200Mb foi usado.
O servidor estava em funcionamento por 139 dias e o uso de memória crescia pouco a pouco a cada dia.
Minha pergunta é: o que poderia ter tirado toda a memória?
EDIT1, adicione algumas informações:
$ ls -l /dev/shm
lrwxrwxrwx 1 root root 8 mai 2 12:46 /dev/shm -> /run/shm
$ ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
------ Semaphore Arrays --------
key semid owner perms nsems
------ Message Queues --------
key msqid owner perms used-bytes messages
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 3051744 4 3051740 1% /dev
tmpfs 611260 496 610764 1% /run
/dev/sda2 14287344 2765996 10772548 21% /
none 4 0 4 0% /sys/fs/cgroup
none 5120 0 5120 0% /run/lock
none 3056288 0 3056288 0% /run/shm
none 102400 0 102400 0% /run/user
Após a reinicialização, (o Zimbra começou):
$ free
total used free shared buffers cached
Mem: 6112576 5712908 399668 832 237892 1829424
-/+ buffers/cache: 3645592 2466984
Swap: 3905532 0 3905532
Alguns gráficos da RAM (reiniciei o servidor por volta das 12:30):
O segundo gráfico mostra os resultados de:
ps aux |awk '{s+=$4} END {print s}'
E terceiro, os resultados de:
smem -tw |grep -v Area | sed 's/ //;s/ //'