Recentemente, esse problema ocorreu no projeto: existem 5 máquinas virtuais executando os mesmos microsserviços, cada máquina é montada com 8 a 9 serviços e uma delas é desligada sem saber por que, e não o serviço é desligado. , A máquina trava, o shell não pode se conectar.
A idéia inicial de diagnóstico considera se um serviço nesta máquina está com memória estourada, então comecei a solucionar problemas de memória e usei o próprio script do jdk para executar a análise de diagnóstico da memória.
1. Visualize os processos ocupados por todos os aplicativos Java (Linux comumente usado ps -ef | grep java)
jps -l
2. Verifique a necessidade de monitorar o processo de coleta de lixo, uso de memória, aqui principalmente para ver se há GC completo
jstat -gcutil 20954 1000
3. Verifique a sobrevivência do mapa correspondente da memória.Aqui, verificamos principalmente se o processo java correspondente tem objetos grandes.Se houver objetos grandes, significa que a memória foi ocupada e não foi liberada.
jmap -histo:live 20954 | head -10
4. Gere uma captura instantânea de arquivo de despejo, exporte e gere heap.hprof, use a ferramenta de diagnóstico de memória MemoryAnalyzer para importar esse arquivo de despejo e ver onde está a análise OOM e localize o código específico
jmap -dump:live,format=b,file=heap.hprof 20954
PS: Depois de encontrar o processo correspondente ao java, você também pode descobrir qual thread ocupa a exceção de memória e também pode verificar de acordo com este método.
Primeiro, você deve instalar a ferramenta de comando pslist no Windows.A
primeira etapa: insira https://technet.microsoft.com/zh-cn/sysinternals/dd443648 pacote de compactação da ferramenta para baixar a
segunda etapa: após a descompactação, copie o pslist.exe para C: \ Windows Diretório \ System32 O
terceiro passo: digite pslist na janela dos, uma janela de prompt será exibida solicitando a concordância e a instalação .. Após a instalação, ele enumera todas as listas de processos
1. Veja os threads correspondentes ao processo
pslist -dmx 20954
2. Em seguida, analise o arquivo de pilha do encadeamento exportado
jstatck 10238 > 1.statck