
CentOS 5.9
Se eu executar kill -3 <java process pid>
o que realmente acontece? Conformeeste artigo do chapéu vermelho, entendo que um Java Thread Dump foi gerado, mas o processo foi encerrado? Não parece ser baseado em meus testes:
[root@foobox ~]# kill -3 14559
[root@foobox ~]# service foo status
foo (pid 14559) is running...
Em outras palavras: eu poderia coletar um dump de thread dessa maneira sem impactar o serviço?
Responder1
Esperançosamente, kill -3
não encerra o processo JVM.
Um dump de thread está impactando levemente o serviço durante a coleta de stacktrace, especialmente se milhares de threads estiverem em execução.
Observe que se o -Xrs
sinalizador for usado, a JVM não manipulará mais especificamente o SIGQUIT
sinal e então esse sinal provavelmente encerrará o processo, a menos que um manipulador alternativo esteja instalado em algum código nativo.
Responder2
https://superuser.com/questions/352147/what-does-kill-3-meanpode fornecer mais algumas informações.
Cabe ao processo determinar exatamente como ele reagirá quando receberSIGQUIT
Como esse sinal pode ser capturado, ignorado ou bloqueado pelo processo, ele pode não respeitar o kill
. Se você quiser olhar ainda mais de perto, sugiro rastrear a pilha do PID strace
enquanto o envia SIGQUIT
com kill.