Common Performance Problems in Application Server - Concurrency

Code Deadlock
"By drilling into each Code Deadlock event, operations were able to analyze the various thread contentions and locate the root cause of the issue. The root cause of the slowdown turned out to be an application cache which wasn’t thread-safe. If you look at the screenshot below, showing the final execution of the threads in deadlock accessing the cache, you can see that one thread was trying to remove an item, another was trying to get an item, and the last thread was trying to put an item. 3 threads were trying to do a put, get and remove at the same time! This caused a deadlock to occur on cache access, thus causing the related JVM to hang until those threads were released via a restart."
Code Deadlock

Waiting Threads
“I simply take the CPU Time and the Method Execution Time of a particular method, component or framework. Here is an explanation of these two values:
§  CPU Time: Is the time spent on the CPU by the executed code
§  Execution Time: This is the total time the method takes to execute. This includes time spent on the CPU, I/O, waiting for external systems to respond, GC times and time spent waiting to enter synchronized code blocks
I chart these values and run increasing load against the web application. I compare how CPU Time relates to Execution Time. The gap between these two values indicates time that is spent on waiting for I/O, external systems or waiting to enter synchronized code blocks”
How to identify synchronization issues under load

Threads Pool
When thread pool is sized too small then thread pool utilization will be at or near 100%, requests waiting in execution queue and the CPU is underutilized.  When a thread pool is sized too large then it will have moderate thread pool utilization, very few requests waiting in the execution queue but CPU utilization will be at or near 100%
'

Comments

Popular posts from this blog

Performance Test Run Report Template

Bugs Management in Agile Project

Understanding Blockchain