O arquivo /lib/systemd/system/rsyslog.services
[Service]
MemoryAccounting=yes
MemoryCurrent=8192000
MemoryLimit=8192000
Eu tenho uma caixa do Ubuntu 14.04.3 rodando o kernel 3.13.0-74 com 32GB de RAM, que apresenta um processo rsyslogd enlouquecido:
$ ps -auxww | grep rsyslog
syslog 16212 0.7 64.0 27966168 21070336 ? Ssl Jan04 180:31 rsyslogd -c 5 -x
$ free -m
total used free shared buffers cached
Mem: 32142 31863 278 228 9 363
-/+ buffers/cache: 31490 651
Swap: 16383 11937 4446
Eu sei que a saída do ps 'não pode ser totalmente confiável, mas certamente é um pouco alta! Eu também tenho duas máquinas irmãs com o mesmo s / w (rodando desde o mesmo tempo) e em ambos os irmãos, o rsyslogd está se comportando melhor (ele ainda está usando cerca de 3.5GB em cada).
Este é o rsyslogd 7.4.4 e eu entendo que um vazamento de memória foi corrigido em uma versão mais recente .
Minha pergunta: antes de me apressar em atualizar, gostaria de reunir algumas evidências para mostrar que, de fato, acertei o vazamento, se possível. Eu deixei o rsyslogd rodando por agora, mas não demorará muito até que ele mude todo o swap, então precisa agir razoavelmente em breve ...
Uma coisa que coleciono evidências é atop
. Isso mostra claramente quando o vazamento começou a ocorrer (e não me lembro de fazer nada de especial na caixa naquele momento). O que é interessante é que, ao mesmo tempo em que a memória começa a crescer, a atividade de gravação em disco cai - embora não pare completamente. O sistema de arquivos é bom em termos de capacidade.
$ atop -r atop_20160117 | grep rsyslogd
PID SYSCPU USRCPU VGROW RGROW RDDSK WRDSK ST EXC S CPU CMD
16212 0.03s 0.06s 0K 0K 0K 96K -- - S 0% rsyslogd
16212 0.11s 0.22s 0K 0K 0K 1844K -- - S 2% rsyslogd
16212 0.03s 0.12s 0K 0K 0K 564K -- - S 1% rsyslogd
16212 0.04s 0.06s 0K 0K 0K 96K -- - S 1% rsyslogd
16212 0.08s 0.19s 0K 0K 0K 1808K -- - S 1% rsyslogd
16212 0.04s 0.11s 0K 0K 0K 608K -- - S 1% rsyslogd
16212 0.02s 0.07s 0K 0K 0K 116K -- - S 0% rsyslogd
16212 0.06s 0.04s 0K 2640K 0K 144K -- - S 1% rsyslogd
16212 0.02s 0.02s 0K 1056K 0K 0K -- - S 0% rsyslogd
16212 0.01s 0.01s 0K 264K 0K 0K -- - S 0% rsyslogd
16212 0.02s 0.04s 0K 2904K 0K 0K -- - S 0% rsyslogd
16212 0.02s 0.02s 0K 1056K 0K 0K -- - S 0% rsyslogd
16212 0.02s 0.00s 0K 264K 0K 0K -- - S 0% rsyslogd
16212 0.06s 0.09s 75868K 3532K 208K 0K -- - S 1% rsyslogd
16212 0.02s 0.02s 0K 792K 0K 0K -- - S 0% rsyslogd
16212 0.01s 0.01s 0K 264K 0K 0K -- - S 0% rsyslogd
16212 0.05s 0.03s 0K 3168K 0K 0K -- - S 0% rsyslogd
16212 0.02s 0.02s 0K 1056K 0K 0K -- - S 0% rsyslogd
16212 0.00s 0.01s 0K 264K 0K 0K -- - S 0% rsyslogd
16212 0.03s 0.10s 0K 2904K 0K 0K -- - S 1% rsyslogd
16212 0.02s 0.02s 0K 792K 0K 0K -- - S 0% rsyslogd
16212 0.00s 0.02s 0K 264K 0K 0K -- - S 0% rsyslogd
16212 0.04s 0.03s 0K 2904K 0K 160K -- - S 0% rsyslogd
16212 0.02s 0.02s 0K 792K 0K 0K -- - S 0% rsyslogd
edit: aqui está o gráfico de memória livre do Zabbix para essa caixa; o início do declínio por volta das 9:30 em 17-Jan coincide com a saída de atop
acima.
edição final: tive que reiniciar o rsyslogd
; liberou uns 20 GB, confirmando - se havia alguma dúvida - que era o culpado:
free -m
total used free shared buffers cached
Mem: 32142 11325 20817 282 56 473
-/+ buffers/cache: 10795 21347
Swap: 16383 5638 10745
Ai, depois de correr apenas 12 horas, agora é mais de 4GB. Claramente, algo não está certo; Vou ter que tentar o caminho de atualização ...
O arquivo /lib/systemd/system/rsyslog.services
[Service]
MemoryAccounting=yes
MemoryCurrent=8192000
MemoryLimit=8192000
Tags rsyslog memory-leaks