2009-04-08 10 views
5

Mam problem z używaniem profilera Netbeans 6.5 do zdalnej profilowania użycia pamięci aplikacji internetowej Java.Używanie profilera Netbeans 6.5 do profilowania zdalnej aplikacji internetowej?

Podążyłem za krokami w tutorial i udało mi się dostosować instancję Tomcat do uruchamiania z agentami profilowania. Mogę także dołączyć profiler Netbeans do uruchomionego serwera: przez kilka sekund profiler pokazuje wykresy z wykorzystaniem pamięci serwera.

Nie mogę jednak uruchomić mojej wdrożonej aplikacji internetowej. Po kilku sekundach serwer zostaje wyłączony z wdziękiem, jakby znajdował się na samym dole głównej metody (prawie nieoczekiwane zachowanie serwera WWW).

Podczas tych sekund serwer nie jest odpowiedzialny i nie mogę połączyć się z aplikacją internetową, po prostu nie są one wdrożone.

Nie chcę importować aplikacji do nowego projektu Netbeans tylko do profilowania. Możliwe jest profilowanie aplikacji zdalnej bez dostępu do jej źródła, prawda? W końcu przez kilka sekund serwer działał i był profilowany.

Chcę profilować aplikację internetową w Netbeans 6.5. O czym zapomniałem?

+0

czytałeś logi serwera? – Sergey

+0

Czy jesteś w stanie profilować/monitorować sam tomcat bez instalowania aplikacji webowej, po prostu uruchamiając "pusty" tomcat? –

+0

To samo dzieje się ze mną. Może byłoby pomocne, gdybyśmy umieścili niektóre numery wersji, z których korzystamy, aby ludzie mogli przeszukiwać to pytanie? Próbowałem wdrożyć w Tomcat 5.5.x, z nim działa zarówno na Java5 i Java6. Moja wersja Netbeans była 6.5 Z drugiej strony, importowanie mojego projektu do Netbeans, a następnie uruchomienie profilera działało idealnie. @sergey Niestety nie było żadnych danych wyjściowych w żadnym z dzienników Tomcat – jklp

Odpowiedz

0

Czy profilujesz cały serwer WWW, czy używałeś filtra profilowania do profilowania tylko swojej paczki? Ograniczenie interakcji między profilerem a samym serwerem aplikacji może go rozwiązać.

1

Można również użyć narzędzia VisualVM. Wykonaj poniższe kroki.

1) Uruchom jstatd (proces demona jstat) (Uruchom na komputerze zdalnym, na którym działa aplikacja) jstatd -p 1098 -J-Djava.security.policy = tools.policy (określ nieużywany port), jeśli tools.policy plik nie jest określony, utwórz go w następujący sposób.

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

zezwolenie java.security.AllPermission; };

2) Określ również następujące właściwości przed uruchomieniem maszyny 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) Uruchom wizualną maszynę wirtualną na komputerze lokalnym. a. W zakładce zdalnej dodaj zdalny węzeł. b. Poczekaj kilka minut, a zobaczysz, że wszystkie główne aplikacje będą widoczne na karcie odległej. c. Kliknij węzeł zdalny, a następnie wybierz Dodaj połączenia JMX określ węzeł: port (port wymieniony powyżej w punkcie 2.) d. Poczekaj kilka sekund, a zobaczysz połączenie JMX pod zdalnym węzłem.

4) Po kilku sekundach pojawi się nowa zakładka pojawiająca się pod zdalnym węzłem. Kliknij dwukrotnie na remote_node: 10992 zobaczysz tabelę profili po prawej stronie. Możesz zobaczyć pamięć, procesor, wątek itp. Szczegóły ..

0

Sprawdź swoją wersję jvm. Wersja używana przez netbeans powinna być taka sama jak w tomcat. Użyj domyślnych portów. Jeśli zmieniłeś jakieś porty upewnij się, że są powyżej 1024. Spróbuj profilować przykładową aplikację w tomcat (usuń wszystkie inne aplikacje). Jeśli działa z powodzeniem, oznacza to, że istnieje ograniczenie pamięci. Profilowanie wymaga dużej pamięci. użyj -xms1024m -xmx1024m dla tomcat. Jeśli wszystko inne zawiedzie. pomyśl o przejściu na jdk6 i tomcat 6. Po wielu próbach odkryłem, że istnieje wiele ograniczeń w jdk5 i tomcat5. przejście na tomcat6 i jdk6 rozwiązało problem dla mnie.

profilowania z netbeans nie działa JRockit IBM JDK etc ..

--kiran.kumar