Merge branch 'master' of github.com:shautvast/perfix

This commit is contained in:
Sander Hautvast 2018-05-31 09:01:49 +02:00
commit 14e759f7fb

View file

@ -3,9 +3,10 @@ Pretty basic profiling tool for JVM's
# Highlights: # Highlights:
* Meant for development time (after process stops, data is gone). * Meant for development time (after process stops, data is gone).
* Minimal memory footprint (agent is 2.5 mb). * Minimal memory footprint (agent < 1 mb).
* Minimalistic commandline interface. * Easy setup (2 commandline arguments for java process)
* Execution time is measured in nanoseconds, reported in milliseconds (this way the totals and averages are most precise, but also human readable). * Minimalistic web interface.
* Execution time is measured in nanoseconds
* No manual instrumentation necessary using loadtime bytecode manipulation (javassist). * No manual instrumentation necessary using loadtime bytecode manipulation (javassist).
* No special jdbc configuration necessary (ie no wrapped jdbc driver). * No special jdbc configuration necessary (ie no wrapped jdbc driver).
* The agent is also the server (unlike commercial tooling). This way there is no overhead in interprocess communication. * The agent is also the server (unlike commercial tooling). This way there is no overhead in interprocess communication.
@ -13,20 +14,18 @@ Pretty basic profiling tool for JVM's
# Usage # Usage
* Agent that instruments loaded classes: -javaagent:<path>/perfix.jar * Agent that instruments loaded classes: -javaagent:<path>/perfix.jar
* Include classes for instrumentation with -Dperfix.includes=com.project. ...etc (includes subpackages) * Include classes for instrumentation with -Dperfix.includes=com.project. ...etc (includes subpackages)
* Ssh interface to report executed methods and sql query excutions: * Web page to report executed methods and sql query excutions:
<br/> * #invocations <br/> * #invocations
<br/> * total execution time for the method in nanoseconds (this is also the sorting order) <br/> * total execution time for the method in nanoseconds (this is also the sorting order)
<br/> * average time in nanoseconds per method (= total/#invocations) <br/> * average time in nanoseconds per method (= total/#invocations)
* The (ssh) server starts on port 2048 by default. Use -Dperfix.port=... to adjust. * The http server starts on port 2048 by default. Use -Dperfix.port=... to adjust.
# roadmap # roadmap
* Overhead (in method execution time) not clear yet. I wouldn't use it in production. * Overhead (in method execution time) not clear yet. I wouldn't use it in production.
* Finish jdbc query logging * Finish jdbc query logging (CallableStatement)
* Make output format configurable
* Implement password login (now any)
* Add web interface (maybe)
* Implement an actual call stack the way commercial tools work * Implement an actual call stack the way commercial tools work
* Ability to dynamically turn off metrics to minimize cpu and memory overhead (when response time is below a set treshold)
# DISCLAIMER: # DISCLAIMER:
This has only been tested on oracle java8 in spring-boot using tomcat web-container This has only been tested on oracle java8 in spring-boot using tomcat web-container