Utilizzo il wrapper del servizio Java in un'applicazione personalizzata da un po 'di tempo e funziona bene. Da quando ha aggiornato la nostra applicazione a una nuova versione negli ultimi giorni, JVM ha iniziato a bloccarsi e quindi wrapper stampa questo nel registro: JVM appare bloccato: Timeout in attesa del segnale da JVM.Java appare bloccato
Quindi termina automaticamente la JVM e avvia nuovamente l'app. Questo accade dopo circa 10 ore di funzionamento, il che rende solo più difficile il debug.
Naturalmente ho intenzione di guardare attraverso i cambiamenti che abbiamo fatto, ma grandi cambiamenti sono stati fatti che ho il sospetto sta causando questo tipo di problema.
Dove posso cercare di capire cosa sta succedendo? I messaggi di debug dall'applicazione non indicano nulla di interessante. Se la JVM si blocca, di solito creerà un dump, che può aiutare nel debugging, ma è sospeso, quindi non sta creando un dump. Se faccio in modo che non riavvii automaticamente il servizio c'è qualcosa che posso fare per ottenere alcune informazioni utili dalla JVM prima di riavviarlo?
Mi sembra che la JVM non debba bloccarsi da errori di programmazione tipici. Che cosa hai incontrato prima che possa causare l'interruzione della JVM?
Linux RHEL4, Java 1.6.0, Intel 32 bit. Sto monitorando il numero di thread e l'utilizzo della memoria; finora non ne usa granché. Non usiamo molto discussioni. Facciamo un po 'di tempo all'avvio delle applicazioni per guardare ogni pochi minuti per vedere se c'è qualcosa da elaborare. –
quanto sono costanti le 10 ore? Ci sono davvero solo un paio di possibilità: o * alcuni * esaurimento delle risorse, o un deadlock/ritardo casuale. Che tipo di applicazione? –
Non coerente. Finora è successo solo tre volte. In realtà sembra che la media sia un po 'più alta di 10 ore. È successo a 12, 14 e 19 ore. Quello che cercherò di fare è impostare il non riavvio automatico in modo da poter esaminare un po 'lo stato quando succede. –