
The JVM metrics are being exposed by the JvmHelper.cfc ColdFusion component, which is cached in the Application scope: For the sake of this demo, however, I'll just read and output the JVM metrics in a simple CFML page. This is called about once every 10-seconds - per pod - which gives us a nice "pulse" of system activity. At work, I read and record (StatsD) these metrics inside of the Kubernetes (K8) readiness check end-point. This is especially true for the Garbage Collection metrics, which are reported as a running-total of wall-clock time since the JVM started.īefore we look at how these metrics are calculated, let's look at how they are consumed. In reality, my code is just a thin layer over these beans that makes their consumption in a ColdFusion context a bit easier. And, even less of what he says about Kubernetes (K8).Īll of the actual JVM metrics that I am reading come from the Java Management Beans. I understand about 20% of what he says about the JVM. As such, I figured I'd share the code that I cobbled together in case it is helpful for others.ĪSIDE: I just wanted to give a huge shout-out to Adnan Kobir, who's been our de facto internal Java expert and has worked tirelessly to help us tune the ColdFusion JVM.

Which means, all of my explicit JVM introspection is being deprecated. Recently, however, we've begun migrating our StatsD metrics over to New Relic's agent-based instrumentation.

Along with those Thread Dumps, I've also been collecting a myriad of StatsD metrics relating to CPU load, garbage collection times, and thread state. I was doing that as part of an ongoing effort to find processing bottlenecks in the main ColdFusion application that we have at InVision. A few months ago, I looked at generating a Java thread dump programmatically using ColdFusion.
