Analyzing Performance at a local Coding Contest

Catalysts, a local IT consulting company, is regularly organizing the Catalysts Coding Contest, and we were happy to sponsor the most recent one that took place in Hagenberg, Austria on December 14, 2012. In this contest, participants get seven assignments to be completed in a programming language of their choice, and upload their solution to a CatCoder server where they are evaluated against test data sets. We used Dynatrace to monitor their environment during the contest and want to share some of the dashboard we used in this blog post.

The “CatCoder Page Performance” dashboard shows an overall view on user experience data collected during the contest’s runtime (14:00-18:00).

CatCoder Page Performance Dashboard
The Page Performance dashboard shows an increase in network time towards the contest’s end.

It’s interesting to see that the majority of participants was located in Europe and didn’t suffer significant user experience issues during the contest (“Global Performance Overview”), with the exception of the last 15 minutes which obviously saw increased network load due to people uploading their completed assignments (“Connect Performance” and “Document Load Breakdown” charts). Server load correlates with the number of assignments handed out – we see seven humps in the server load part of the “Page Action Time Breakdown” chart.

On the “CatCoder Performance Overview” dashboard we see how different tiers contributed to overall transaction duration.

Transaction Flow
Failed transactions are indicated for the CatCoder tier in the transaction flow.

What’s interesting here is the number of failed transactions, which we will take a deeper look on:

Errors for the CatCoder tier

Looking at HTTP errors, the largest chunk goes to HTTP 403 errors, indicating access to resources that would require authentication. More interesting are HTTP 500 errors, which affected a total of 220 transactions:

Drill-down to HTTP 500 errors

Drilling down to the exceptions dashlet tells us more about the reasons behind these failures:

List of exceptions that caused HTTP 500 errors

The exception thrown most often is related to validating bean properties during storing objects in the database, causing subsequent errors as the insert operation fails. Also interesting is the fact that 42 transactions were affected by deadlocks, and by drilling down to the PurePaths dashlet we can identify the statements:

PurePath with failing SQL statement

And, last but not least, we’d link to congratulate our colleague Philipp Lengauer for making his way to #11 in the Hall of Fame!

Wolfgang Gottesheim has nearly ten years of experience as a software engineer for Java Enterprise environments. In his role as Technology Strategist he is involved in the strategic development of Dynatrace. His focal points are Continuous Delivery and DevOps. Twitter: @gottesheim