CPU load is a measure of how many processes are currently requesting a processor. Processes blocked on I/O (like accepting network connections) don’t count in the calculation. A load of 1 indicates that exactly 1 process needs a CPU. If you have at least 1 CPU, your server is doing great.
The number fluctuates wildly every second, so the number is generally aggregated over 1 minute, 5 minutes, and 15 minutes. We call these the 1 minute load average, 5 minute load average, and 15 minute load average. To see your load averages, run top and look for “load average”.
Comparing load between servers and clusters is only valid if the number of CPUs is the same in the comparison. A load of 2 on a server that has 4 CPUs is “healthy.” A load of 2 on a server that has 1 CPU is “sick.” We recommend using normalized load, which doesn’t have this problem. To calculate normalized load, divide the load by the number of processors. This is the metric we recommend you use in all load calculations. A load of greater than 1 means sick. A load of less than 1 means healthy.
Servers can handle spikes in normalized load, even over 1, and still be healthy. If the load spike is a one-time spike, the CPU will naturally catch up. The problems occur when spikes are prolonged or abnormally high such that the normalized load becomes unrecoverable.
When you have an unrecoverable load, you can expect issues like the following:
Add CPU capacity by adding servers or upgrading servers.
If the server is running a third-party application, verify your configuration and add more capacity as appropriate. The most common cause for high load on web servers and database servers is the number of active connections allowed. Allowing fewer connections will streamline operations and reduce overall congestion.
If the server is running a custom application, determine the cause of the load: