Temos um servidor que executa vários aplicativos headless, como Java. Ele processa para transmitir dados, scripts python diários, etc. De tempos em tempos, alguns de nossos aplicativos ficam out of memory errors
.
O problema que temos é que o monitoramento mostra que há muita memória RAM. Aumentamos de 128 GB para 192 GB e não resolveu o problema. Nosso monitoramento faz uma leitura a cada 20 segundos e mostra a memória mínima disponível de 132 GB nos últimos 2 dias. Mas alguns aplicativos falharam com erros de falta de memória esta manhã. É possível obter OOM com bastante RAM disponível?
EDIT: Resposta às perguntas de David
- sim, os 192 GB são apenas a memória RAM alocada para o sistema operacional. É uma VM
- O monitoramento lerá ram livre/disponível para o sistema operacional, não temos nenhum monitoramento por processo
- A maioria dos processos java não especifica requisitos de memória na CLI (por exemplo, Xmx, etc.)
- A exceção é "Exceção no encadeamento "principal" java.lang.OutOfMemoryError: impossível criar novo encadeamento nativo"
Eu acrescentaria que vários processos falham ao mesmo tempo. Para mim, isso indicaria que não é um problema com o processo em si, mas algo a ver com o sistema. Alguns dos aplicativos que falham fazem a mesma coisa o dia todo, todos os dias, que é processar um fluxo de dados bastante consistente. Não é como se eles pudessem ser inundados com um grande número de solicitações.