Continuous profiling of JVM
Jun 15, 2021Behrooz Nobakht, Narayanaswamy Anandapadmanabhan

Summary
This post details the evolution of Atlassian's JVM profiling tooling, starting from an initial in-house solution for ad-hoc profiling using AWS Systems Manager, Linux perf, and async-profiler. It highlights the limitations of this approach, such as missing transient issues and lack of baselines, which drove the development of a continuous profiling system. This system involved scheduled profiling runs, data transformation to Apache ORC, storage in S3, and querying via AWS Athena. The post then discusses the adoption of Amazon CodeGuru Profiler as a platform-level solution, including a case study on using its HotSpot view to identify and resolve thread blocking issues by switching from synchronized EnumMap to ConcurrentHashMap.