Struts is a framework very commonly used for building Java Web Applications. It’s also been used as the main web framework for a new car rental platform this story is based on. During load and performance testing it was discovered that the application couldn’t sustain a fraction of the load that was expected. Response Times went through the roof until the application server actually declined new requests. The Application Servers were properly sized and configured with enough worker threads – yet still the application failed to deliver the promised performance.
Using Dynatrace, it turned out that a well-known bug in Struts 2.3.8 (WW-3971 Apache Jira Ticket) – which causes repeated synchronized read access to the struts configuration files – caused this problem. In case you are running on Struts make sure to watch out for this known issue. If you are not sure whether this – or similar problems – impact your application continue reading this blog and follow the same steps as Shaun and Andrew used to identify that issue: