2012-12-03 7 views
7

Ho riscontrato un problema molto strano con TomEE 1.5.1 e VisualVM 1.7.0_09 su MAC OSX mountain lion.VisualVM si connette al TomEE locale molto lentamente e non può eseguire un dump dell'heap

Dopo che TomEE ha caricato alcuni webapp.Utilizzare VisualVM collega il processo locale di TomEE richiede molto tempo, e dopo aver collegato il pulsante gc è disabilitato e non posso prendere un dump dell'heap. il registro VisualVM 'mostra qualche errore.

com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded 
    at sun.tools.attach.BsdVirtualMachine.<init>(BsdVirtualMachine.java:90) 
    at sun.tools.attach.BsdAttachProvider.attachVirtualMachine(BsdAttachProvider.java:63) 
    at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:213) 
    at com.sun.tools.visualvm.attach.AttachModelImpl.getVirtualMachine(AttachModelImpl.java:104) 
Caused: java.io.IOException: Unable to open socket file: target process not responding or HotSpot VM not loaded 

il file .java_pid<pid> non creato nella cartella tmp.

Ma se utilizzo VisualVM per connettere TomEE dopo averlo avviato e prima che vengano caricate le applicazioni Web, viene creato il file .java_pid<pid> e VisualVM si collegherà immediatamente a esso e il dump dell'archivio funzionerà.

Un'altra soluzione è modificare catalina.sh per aggiungere tools.jar al ClassPath e rimuovere openejb javaagent, quindi connettersi dopo che TomEE completamente avviato funziona correttamente.

Impossibile riprodurre su una macchina Ubuntu.

+0

ti stai connettendo con JMS? Prova con JMS. –

+0

Prova jconsole e guarda come funziona – javahaxxor

risposta

0

Probabilmente jvm sta esaurendo la memoria. L'ho visto molte volte. Prova:

  1. increasing memory limits.
  2. Connetti VisualVM a jvm.
  3. Distribuisci la tua applicazione.
  4. E lanciare un campionatore di memoria, un profiler o un dump di heap per diagnosticare il problema. Probabilmente hai perdite di memoria. La discarica heap è il modo più sicuro per andare se si verificano problemi di memoria. È inoltre possibile take heap dump using command line e analizzarlo in VisualVM in seguito.

Assicurarsi inoltre che il sistema non stia esaurendo la memoria.