Gdy ostatnio z czystej ciekawości przeprowadziłem prosty test wydajności na pewnej aplikacji webowej, okazało się, że "coś się dzieje". Okazało się, że po kilku naprawdę bystrych enhancementach, słowo "bystry" nabrało zupełnie nowego znaczenia. Skoro "ab" daje wyniki rzędu 150 req/sek na stronie która nie robi wiele więcej niż wyrenderowanie w miarę prostej strony z kilku zagnieżdżonych szablonów Velocity to coś nie gra. Wynik zadowalający to 400req/sek. Do dzieła...

Niektórzy używają Netbeans czy też JMeter, ja skoro na codzień preferuję Eclipse to postanowiłem poszukać czegoś all-in-one. Wybór padł na TPTP. Do Eclipse Indigo musiałem doinstalować go ręcznie. Nie pamiętam na czym polegały problemy z podłączeniem się do embeded Agent Controller-a więc pobrałem pakiet TPTP All-in-one i uruchamiałem Agent Controller ręcznie. Gdy ten już działa możemy uruchomić aplikację którą chcemy profilować. Ważne są zmienne środowiskowe, czytanie dokumentacji (to mnie zgubiło) oraz (w moim przypadku) parametr do Mavena...

SET TPTP_AC_HOME=G:\tools\agentcontroller
SET JAVA_PROFILER_HOME=%TPTP_AC_HOME%\plugins\org.eclipse.tptp.javaprofiler
SET PATH=%JAVA_PROFILER_HOME%;%PATH%;%TPTP_AC_HOME%\bin
SET MAVEN_OPTS=-agentlib:JPIBootLoader=JPIAgent:server=enabled;CGProf
mvn jetty:run


Teraz można utworzyć nową konfigurację profilera, podpiąć się pod port Agent Controllera, wybrać wątek, który udostepnia interfejs profilera...

undefined

 ... i ponownie uruchomić "ab -n 1000 -c 10 xxxx" by po paru chwilach otrzymać statystykę najczęściej wykonywanych i najdłużej trwających metod...

undefined

Tak więc mamy narzędzie. Warto nauczyć się nie tyle co z niego korzystać a interpretować wyniki które daje.