Weblogic, JVM e EAR
Domanda
Sto pensando di fare un heap dump con lo strumento jdk1.5 jmap su un weblogic di produzione (10) istanza.
In realtà ci sono 3 EAR (forse di più, non so davvero non ho accesso) distribuito su questa istanza weblogic.
Qualcuno mi ha detto "weblogic crea una JVM per ogni orecchio" Qualcuno può confermare?
Con jmap ho bisogno del PID JVM come parametro per fare il heap dump ... Dal momento che ho 3 EAR Credo di avere 3 pid quindi mi chiedo come sapere che corrispondono pid a cui EAR JVM?
Soluzione
No - ogni server Weblogic (o qualsiasi processo Java) viene eseguito in una propria JVM con il proprio PID. Quindi tutto le orecchie appariranno nello stesso dump heap.
Se si dispone di più istanze del server Weblogic in esecuzione sulla stessa macchina, ciascuna avrà una PID separata e un processo separato
Altri suggerimenti
Come @josek dice, si avrà una JVM per WebLogic Server, quindi se tutte le vostre orecchie sono sotto lo stesso server WebLogic you'l avere un solo pid a discarica. Ma si può ancora avere più server - forse un server di amministrazione e un server gestito, forse altri casi non correlati - quindi se lo farete qualcosa come ps -ef | grep java
(? Sto assumendo questo è su Unix) si poteva vedere un sacco di PID, anche se è possibile filtrare per JDK_HOME del WebLogic.
Un modo per identificare quali pid appartiene a un determinato server è quello di andare alla directory <domains>/servers/<your server>/tmp
, e lì dentro fuser -f <your server>.lok
corsa. Ciò elencherà i PID di tutti i processi legati al server, uno dei quali sarà il processo Java JVM. (Può essere altri per JDBC, ecc) Un modo per trovare solo il processo java (! E sono sicuro che qualcuno indicherà un altro, modo migliore) è qualcosa di simile:
cd <domains>/servers/<your server>/tmp
ps -p "`fuser -f <your server>.lok 2>/dev/null`" | grep java
Se ogni orecchio è nel suo proprio server, immagino si dovrà guardare config.xml per vedere quale è necessario.