2009-04-08 9 views
5

Non riesco ad utilizzare il profiler Netbeans 6.5 per tracciare l'utilizzo della memoria di un'app web Java, da remoto.Utilizzo del profiler Netbeans 6.5 per profilare un'app Web remota?

Ho seguito i passaggi nello tutorial e sono riuscito a personalizzare un'istanza Tomcat per iniziare con gli agenti di profilatura. Posso anche collegare il profiler Netbeans al server in esecuzione: per alcuni secondi, il profiler mostra i grafici con l'utilizzo della memoria del server.

Tuttavia, non è possibile eseguire l'app Web distribuita. Dopo pochi secondi, il server viene chiuso con grazia come se avesse semplicemente raggiunto il fondo del suo metodo principale (quasi il comportamento previsto di un server web).

Durante questi secondi, il server non è responsabile e non riesco a collegarmi a un'applicazione Web, semplicemente non vengono distribuiti.

Non voglio importare la mia app in un nuovo progetto Netbeans solo per la sua profilazione. È possibile profilare un'app remota senza accesso alla sua fonte, giusto? Dopotutto, per alcuni secondi, il server era in esecuzione e veniva profilato.

Desidero profilare un'applicazione Web in Netbeans 6.5. Cosa ho dimenticato?

+0

Hai letto i log del server? – Sergey

+0

Sei in grado di profilare/monitorare stesso tomcat senza distribuire la tua webapp, eseguendo solo "vuoto" tomcat? –

+0

La stessa cosa mi sta succedendo. Forse sarebbe utile se mettessimo alcuni numeri di versione di ciò che stiamo facendo in modo che le persone possano cercare la domanda? Stavo cercando di implementare in Tomcat 5.5.x, con il suo funzionamento sia su Java5 che su Java6. La mia versione di Netbeans era 6.5 D'altra parte, l'importazione del mio progetto in Netbeans e l'esecuzione del profiler funzionavano perfettamente. @sergey Sfortunatamente non c'era alcun output in nessuno dei registri di Tomcat – jklp

risposta

0

Sto profilando l'intero server web o hai usato il filtro di profilazione per profilare solo il tuo pacchetto? Ridurre l'interazione tra il profiler e il server dell'app stesso può risolverlo.

1

È anche possibile utilizzare lo strumento VisualVM. Segui i passaggi sotto indicati.

1) Run jstatd (jstat processo demone) (eseguito sulla macchina remota in cui applicazione è in esecuzione) jstatd -p 1098 -J-Djava.security.policy = tools.policy (specificare la porta non utilizzata) se tools.policy il file non è specificato, crealo come segue.

tools.policy 
grant codebase "file:${java.home}/../lib/tools.jar" { 

permesso java.security.AllPermission; };

2) Specificare inoltre le seguenti proprietà prima di avviare JVM.

#JMX property 
JVM_ARGS="${JVM_ARGS} -Dcom.sun.management.jmxremote=true" 
JVM_ARGS="${JVM_ARGS} -Dcom.sun.management.jmxremote.port=10992" 
JVM_ARGS="${JVM_ARGS} -Dcom.sun.management.jmxremote.authenticate=false" 
JVM_ARGS="${JVM_ARGS} -Dcom.sun.management.jmxremote.ssl=false" 

3) Avviare la VM visiva sulla macchina locale. a. Sotto scheda remota aggiungi nodo remoto. b. Attendere un paio di minuti vedrete tutte le istanze delle applicazioni principali saranno visualizzate nella scheda remota. c. Fare clic sul nodo remoto, quindi selezionare Aggiungi connessioni JMX, specificare nodo: porta (porta menzionata sopra al punto 2) d. Attendi alcuni secondi per vedere la connessione JMX sotto il nodo remoto.

4) Dopo alcuni secondi, verrà visualizzata una nuova scheda sotto il nodo remoto. Fare doppio clic sul remote_node: 10992 vedrai la tabella dei profili sul lato destro. Puoi vedere i dettagli di memoria, cpu, thread, ecc ..

0

Controlla la tua versione di jvm. La versione utilizzata da netbeans dovrebbe essere la stessa di tomcat. Usa porte predefinite. Se hai cambiato qualsiasi porta assicurati che siano superiori a 1024. Prova a profilare l'applicazione di esempio in tomcat (rimuovi tutte le altre applicazioni). Se sta funzionando con successo significa che c'è un vincolo di memoria. La creazione di profili richiede un'enorme memoria. usa -xms1024m -xmx1024m per tomcat. Se ogni altra cosa fallisce. pensa di passare a jdk6 e tomcat 6. Dopo molte prove ho scoperto che ci sono molte limitazioni in jdk5 e tomcat5. passare a tomcat6 e jdk6 ha risolto il problema per me.

profilatura con NetBeans non funziona JRockit, JDK IBM ecc ..

--kiran.kumar