Performance Checklist

Some of these suggestions apply only after a bottleneck has been identified:

  • Tune the application before tuning the underlying system. This is especially pertinent to network communications.

    • Limit application bandwidth requirements to the network segment with the smallest bandwidth.

    • Consider network latencies when specifying feasible application response times.

    • Aim to minimize the number of network round trips necessary to satisfy an application request.

  • Constantly monitor the entire system with any monitoring tools available. Monitoring utilities include perfmeter (Unix CPU), vmstat (Unix CPU, RAM, and disks), iostat (Unix disks), performance monitor (Windows CPU, RAM, and disks), netstat (network I/O), ping (network latency) and nslookup (DNS lookup and routing).

    • Keep monitoring records to get a background usage pattern.

    • Use normal monitoring records to get an early warning of changes in the system usage patterns.

    • Watch for levels of paging that decrease system performance.

    • Watch for low CPU activity coupled with high disk activity and delayed responses. This may indicate an I/O problem.

    • Monitor for retransmissions of data packets.

    • Ensure the CPU runnable queue does not get too large.

    • Aim for average CPU utilization to be not more than 75%.

  • Consider spreading extra computation loads to low activity times.

    • Run offline work in off-peak hours only.

    • Time all processes and terminate any that exceed timeout thresholds.

  • Consider upgrading or reconfiguring parts of the system. ...

Get Java Performance Tuning now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.