This is a spring boot library that runs async-profiler in the continuous mode.
This project is just a set of tool that run async-profiler.
If you want to use the other version of profiler than 4.5 provided by
AP-Loader, you need to specify
path to libasyncProfiler.so. You can do it with spring application properties/yaml/... For example:
async-profiler.continuous.profiler-lib-path=/path/to/libasyncProfiler.soYou just need to add dependency to your spring boot application
<dependency>
<groupId>com.github.krzysztofslusarski</groupId>
<artifactId>continuous-async-profiler-spring-starter</artifactId>
<version>4.5</version>
</dependency>with a proper version.
<dependency>
<groupId>com.github.krzysztofslusarski</groupId>
<artifactId>continuous-async-profiler</artifactId>
<version>4.5</version>
</dependency>Add a following import in your @Configuration file:
@Import(ContinuousAsyncProfilerConfiguration.class)The async-profiler is run all the time in wall-clock mode. Output from the profiler is dumped to the logs/continuous directory every
60 seconds. The files in the logs/continuous directory are stored for 24h. Once a day files from that directory that matches regex
.*_13:0.* are copied to logs/archive directory. On defaults the archive contains 10 minutes of each profiled day. Files in the
logs/archive directory are stored for 30 days.
async-profiler.continuous.enabled = true- if the tool should work or notasync-profiler.continuous.continuous-outputs-max-age-hours = 24h- time in hours, how long to keep files in the continuous directoryasync-profiler.continuous.archive-outputs-max-age-days = 30d- time in days, how long to keep files in the archive directoryasync-profiler.continuous.archive-copy-regex = .*_13:0.*- regex for file name, which files should be copied from the continuous to the archive directoryasync-profiler.continuous.event = wall- async-profiler event to fetchasync-profiler.continuous.stop-work-file = profiler-stop- path to a file, if the file exists then profiler is not running, using this file you can turnasync-profiler.continuous.additional-parameters- additional parameters, for examplealloc=2m,lock=10msasync-profiler.continuous.override-event-settings- override event settings, for examplealloc=2m,lock=10msasync-profiler.continuous.add-event-to-file-name = true- whether the event name should be appended to the output file nameasync-profiler.continuous.prefix- output file prefix on/off profiling at runtime
async-profiler.continuous.load-native-library = true- if the tool should load native async-profiler library (turning off disables starter permanently)async-profiler.continuous.dump-interval = 60s- time in seconds, how often tool should dump profiler outputsasync-profiler.continuous.compression-interval = 600s- time in seconds, how often tool should compress profiler outputs, values <= 0 disable compressionasync-profiler.continuous.output-dir.continuous = logs/continuous- where continuous output should be storedasync-profiler.continuous.output-dir.archive = logs/archive- where archive of the outputs should be storedasync-profiler.continuous.profiler-lib-path- path tolibasyncProfiler.soasync-profiler.continuous.manageable-properties-repository = default- what properties resources should be useddefault- properties from spring contextjmx- properties from spring context with registered mbean for changing them in runtime
You can change manageable properties source from spring to any you want. You need to implement a spring bean, that implements following interface:
com.github.krzysztofslusarski.asyncprofiler.ContinuousAsyncProfilerManageablePropertiesRepository
First of all this tool is just an async-profiler runner. If you cannot run plain async-profiler on your OS then you cannot use this tool.