September 16, 2013

Posted in:

Life of a Java Web Application Support Engineer

FusionReactor-5As a Java web application support engineer, there are two common questions that I handle most often. They are:

1) Our server has crashed – Can you help?
Usually this means that the server is no longer serving web pages (in a timely manner). Typically the server and application services are up, but taking forever (several minutes) to process a single page – resulting in a variety of timeout errors and the dreaded web “white screen of death”.

2) Our site is running slowly – Can you help?
Unlike the above case where users are rarely seeing a response, in this case users are seeing a response but they’re having to wait a long time to see anything – typically 15-45 seconds.

In either case, a favorite tool I use to troubleshoot the issue is FusionReactor. FusionReactor is a Java server monitoring tool that gives me real-time insight of the inner workings of my Java engine. FusionReactor has been around for many years now and is a mature product for monitoring any Java based technology and works on all the Java based ColdFusion releases (versions 6-10, at the time of writing).

Firstly, FusionReactor has its own built-in web server – accessing via this helps me understand if the problem is with web-to-application server connectivity (eg IIS or Apache talking to ColdFusion) or with something within the application server. I’ll first take a look at the Web Metrics page. This shows me a great overview of the server status from request & JDBC processing and wait-time to heap memory and process & system CPU. I’ll then take a look at the running requests and stack trace them all – this shows me exactly what lines of code are being executed at that moment in time. Typically I’ll refresh this a few times – this gives a really good indication if any of the threads are “stuck” processing. Often you’ll find that there’s a common theme in the threads – whether it be writing to a log file, locking contention or the most common – a DB delay. From that point you can really start to dig into the guts of what’s happening; for example identifying a common DB table that’s blocking all requests.

The FusionReactor v5 release has a new UI which makes it a lot faster to find my way about and dig into details – it also allows me to view a much longer history – week’s worth of data – with minimal overhead. As more and more customers are pushing into mobile/tablet websites or perhaps even their own apps, it’s really important to get a view of the whole picture – that’s why I love the new User Experience Monitoring (UEM) in FusionReactor v5. For those of you who aren’t familiar with this concept, it’s essentially a way to view the network & client browser rending time for pages coming from your server. There’s a really neat chart that lets me see how much time is being spent at the DB/App Server/Network/Client Browser in one chart – quickly and visually focussing my attention to any problem points. I recently had one customer who’d deployed a new JavaScript based charting module to their website to service their largely mobile connected customer base. Although desktop testing had been done; they’d neglected to account for the slower network connections and CPU power typically found on mobile devices. Where other tools could result in false positives of very minor issues server side, FusionReactor v5 quickly pointed to the large assets going back to the client browser and slow rendering time.

There’s a whole host of FusionReactor capabilities ranging from content compression to longest request/JDBC analytics and even un-attended protection & threshold alerting – if you haven’t heard of them or haven’t reviewed their product in a while, I’d urge you to take a look. The recent v5 release incorporates a lot of community feedback and my favourite enhancement – no more JDBC wrapper – it just captures your DB metrics auto-magically!

If you’re configuring a new server or just looking for ways to improve your existing setup – help yourself (and us!) improve your platform; try out FusionReactor.

Go back