JAVA Tuning Approach
JAVA Tuning Approach
When Can You Conclude Performance Tuning?
The primary goal of system level tuning is to saturate the application server CPU i.e. around 90% to 100% utilization. Achieving highest throughput without a fully saturated CPU is an indication of performance bottleneck such as over-synchronization, I/O contention and improper configuration of thread pools. Reaching high response time metrics with an injection rate below the CPU saturation levels may indicate some latency issues such as improper database configuration or excessive disk I/O.
The application server CPU saturation level denotes that there are no system level bottlenecks outside of the server. The throughput measured at these levels would point out the maximum capacity the system has within the current application implementation. Further tuning includes adjusting the parameters of garbage collection and increasing application server nodes to the cluster.
Note: CPU utilization is not necessarily the only resource to monitor. For instance, a common issue in initial tuning efforts is properly configuring the size of application server thread pools. If thread pools are too small, requests may be forced to wait in an execution queue, increasing response time dramatically. But small thread pools do not exercise the CPU.
As 100% thread pool utilization on a small pool might translate to just 20% CPU utilization, the thread pool resource issue would be missed if only CPU utilization is being monitored.
Hitting CPU saturation level may be a goal for the performance tuning process but need not be an operational goal. An operational goal is to make sure that there is adequate capacity available to address all the usage surges.
Pages: 1 2