Eu tenho um servidor rodando a versão 6.7 do Red Hat Enterprise Linux Server. O servidor executa vários processos java, incluindo um servidor tomcat com nginx webserver. O servidor tem 12 GB de ram alocado para ele.
Após a inicialização imediata, o servidor mostra estar usando 1289 MB de ram (free -m - / + buffers / cache line) ... saída abaixo.
Um "ps aux" na inicialização do servidor mostra o uso de memória de todos os processos sendo um total de 1.290.996 k de memória (a coluna RSS) ... Os 2 números são muito próximos.
Após 2 dias de disponibilidade, o -m agora nos mostra usando 10.698 MB de memória enquanto "ps aux" totaliza até 8.345.352 k para todos os processos.
Nós tentamos parar / matar cada processo um por um e mesmo com um número mínimo absoluto de coisas rodando (sem Tomcat, sem Java, sem Nginx) nós nunca recuperamos o "Missing" ~ 2GB de ram. A única coisa que descobrimos para recuperar a memória ausente é reinicializar o servidor. Se o servidor passar mais de 3-4 dias sem reinicializar, ele começará a invadir o espaço de troca, o que eventualmente causará um alto uso da CPU e os aplicativos Java executados nele serão paralisados.
Também devo mencionar que este servidor está sendo executado como uma máquina virtual usando o VMWare.
Saída gratuita -m na inicialização:
total used free shared buffers cached
Mem: 11852 1787 10064 0 28 468
-/+ buffers/cache: 1289 10562
Swap: 8191 0 8191
Saída gratuita -m após dois dias de atividade
total used free shared buffers cached
Mem: 11852 11625 226 0 146 779
-/+ buffers/cache: 10698 1153
Swap: 8191 43 8148
O que posso fazer para ajudar a diagnosticar onde a memória "Ausente" vai para que eu possa resolver o problema. Qualquer sugestão é apreciada.
Obrigado!
Tags nginx tomcat memory memory-leaks rhel