Eu tenho algo meio estranho acontecendo com a memória.
Eu tenho servidores Ubuntu 14.04 com Zimbra 8.6 com kernel (para este) 3.13.0-37-generic. Mas eu já vi o problema com outros kernels.
A memória e a 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 pensei 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 200 Mb foram usados.
O servidor permaneceu ativo por 139 dias e o uso da memória foi aumentando pouco a pouco a cada dia.
Minha pergunta é então: o que poderia ter levado 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 iniciou):
$ 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, resultados de:
smem -tw |grep -v Area | sed 's/ //;s/ //'
ipcs
,ls -l /dev/shm
tamanho dos sistemas de arquivos tmpfs, ...) #free
saída em alguns minutos após o momento em que o Zimbra estiver parado e o sistema ainda estiver usando um log de memória?Respostas:
Cache.
Um bom resumo em http://www.linuxatemyram.com/ .
Para limpar os caches, use este comando como raiz e observe o uso resultante da memória.
fonte
free
dada na pergunta: ele mostra apenas ~ 80 MB nos buffers de cache e disco.