Solucionar problemas de memória da JVM

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.
123test
1. Visualize os processos ocupados por todos os aplicativos Java (Linux comumente usado ps -ef | grep java)

jps -l

Insira a descrição da imagem aqui

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

Insira a descrição da imagem aqui

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

Insira a descrição da imagem aqui
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 

Insira a descrição da imagem aqui

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
Publicado 5 artigos originais · Gosto1 · Visitas 99

Acho que você gosta

Origin blog.csdn.net/iYhuitune/article/details/105339878
Recomendado
Clasificación