La mia situazione è simile a questa:Arresto di Tomcat MOLTO lento dopo aver chiamato shutdown.sh?
Ogni volta prima di caricare file di guerra nella cartella web-app, interrompo Tomcat chiamando lo sh shutdown.sh
. Ci sono voluti circa 30 secondi per uno spegnimento totale. Ma ora non funziona più bene.
In realtà, ha funzionato, perché quando accedo all'applicazione da una pagina Web genera 503 errori (in Manutenzione). Ma quando uso il controllo ps aux | grep tomcat
, il processo tomcat è ancora lì. E sarà lì per circa 5 - 10 minuti.
Capisco che potrebbe essere necessario prendere più volte per completare tutte le attività, ma è troppo lento (5 - 10 minuti), prima che si fermi completamente. Non capisco perché questo accada, ma ci deve essere un motivo. Forse c'è qualcosa a che fare con il codice o il nuovo script di distribuzione che abbiamo usato di recente. Non ho quasi nessuna idea su dove controllare.
Questo è importante per il nostro team perché stiamo utilizzando "auto-deployment", in cui utilizziamo uno script per auto-pacchetto di file war, caricamento e distribuzione in un momento specifico. Se avessimo iniziato una nuova istanza di tomcat prima che il vecchio si arrestasse con successo, rimarrà sospeso per sempre, e l'attività di ripulitura di "kill -9" è scoraggiante.
C'è qualcuno che ha sperimentato questo problema? Qualsiasi suggerimento sarebbe apprezzato.
D: Allora, qual è l'ultima cosa al registro quando si sta prendendo questa 5-10 minuti? INOLTRE: fa "ps -eaf" fornirti degli indizi (o vedi semplicemente un processo Java con zero utilizzo della CPU)? Qual è la tua versione di Tomcat? Il tuo sistema operativo? ANCHE: se si identifica un processo "java" "sospeso" in "ps", si dovrebbe ottenere una traccia dello stack: http://wiki.apache.org/tomcat/HowTo#How_do_I_obtain_a_thread_dump_of_my_running_webapp_.3F – paulsm4
@ paulsm4: guardando il registro , Vedo che anche dopo aver chiamato shutdown.sh, i miei processi Quartz continuano a funzionare. Dopo un po 'viene fuori un errore: SEVERE: l'applicazione web [/ project] sembra aver avviato un thread chiamato [Resource Destroyer in BasicResourcePool.close()] ma non è riuscito a fermarlo. È molto probabile che questo crei una perdita di memoria. –
@ paulsm4: a proposito, ho il lavoro al quarzo eseguito circa 10 secondi alla volta. Questo può essere un problema? –