Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: Blunders.io, a tool to profile JVMs in production (blunders.io)
46 points by antonhag on June 24, 2020 | hide | past | favorite | 16 comments


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:

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.


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 :)

Edit: typo


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.


AdoptOpenJDK provides builds for JMC now https://adoptopenjdk.net/jmc.html

New versions of VisualVM can also open flight recorder files


Hi HN!

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 :)


Anton, looks cool. A couple questions if I may:

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?

Thanks!


Thanks for checking it out!

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.


A note: the "Memory allocation flame chart" image isn't rendering for me in Firefox. It renders in Chrome.


Thanks for noticing, I have been noticing the same thing. Trying to figure out why, usually it works just fine in FF as well.


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.


This seems pretty cool. Would I still get value if I only want to sample performance a few hours a week, say, under high load? Do you allow for that?


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?


Is there a similar tool that you can throw at Electron/NodeJS apps to figure out why Slack and Teams are eating all the CPU and memory again?


I guess Chrome DevTools, since they can plug into other instances.


Pretty cool tool, could easily see myself using this




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: