How does this compare with Flight Recorder? As of Java 11, Flight Recorder and its analysis tools (JDK Mission Control, formerly Java Mission Control) are free and open source:
I have found Flight Recorder light weight enough to have it always enabled on production services. I didn't start using it until last year because it was a commercial feature on older Java releases.
EDIT: another comment says that this is based on Flight Recorder. The value add proposition is around the interface rather than the instrumentation, then. I think there is an opportunity there. JMC is fairly heavyweight and doesn't have good visualization/exploration tools for everything.
You are exactly right! The value added here is a having automatic uploads of JFR dumps, which are viewable based on machine and timespan through a web UI.
If you have it enabled in production, I assume that it requires some effort to find the right file and download it to view it on JMC? And if you want to share that view with a colleague they have to do the same. Blunders aims to make such things easier.
I've also tried to make a "better" visualization (based on flame graphs), not sure if I succeeded though :)
Dumps go automatically to an S3 bucket with an expiration policy. But everyone who wants to visualize the dumps with JMC needs to build JMC from source locally, since there is still no stable release process or packaging for it AFAICT.
I'm Anton, and I wanted to show you this tool that I have been building over the last year or so. It's based on experience from working with performance of Java apps (particularly Elasticsearch), and would have made my life so much easier in that role.
I would love feedback on essentially everything! You can see the core of the product by pressing the "demo" button on the top of the landing page. Thanks in advance :)
1) What is the performance impact under typical production loads? Many JVM profilers are absolutely brutal to JVM performance and can't be realistically used in Production.
2) How does this compare to the lightweight JVM profilers offered by New Relic and Dynatrace?
1) The agent is based on the Java Flight Recorder (https://en.m.wikipedia.org/wiki/JDK_Flight_Recorder) which is a technology built into the (Oracle/OpenJDK) JVM. The performance impact is thus rather small, around 1-2% of CPU.
2) To the best of my knowledge, New Relic and Dynatrace can't provide similar levels of JVM metrics (e.g. which methods allocate the most memory), since they are based on JMX metrics rather than flight recorder data. They do however have better APM functionality and framework integration than Blunders.
I would not attach a java agent which sends out JVM profiling to a remote site and that too in production.
Do you intend to have an offline version of this tool?
For offline, I don't really see the point? The biggest use case here is being able to pull in data from many machines into one place.
Self-hosted solutions would be possible though.
I'd also like to clarify what kind of data is uploaded - it's what kind of classes and methods are used, not any of the actual data. E.g. it might contain information that you use BCrypt, but not input nor output. It is however, of course, your decision if you judge that data sensitive or not.
In theory yes, but there is some building that I'd need to do to make that easy. You can make it happen now by restarting the processes with and without the agent, but the goal is to have it configurable in the UI.
If you like to, I could try to get back to you once that's built?
https://github.com/openjdk/jmc
I have found Flight Recorder light weight enough to have it always enabled on production services. I didn't start using it until last year because it was a commercial feature on older Java releases.
EDIT: another comment says that this is based on Flight Recorder. The value add proposition is around the interface rather than the instrumentation, then. I think there is an opportunity there. JMC is fairly heavyweight and doesn't have good visualization/exploration tools for everything.