CPU saturation
Processes actively consume available CPU time and runnable processes wait for access to the processors.
A high load average does not automatically mean the CPU is overloaded.
Processes waiting on disk I/O can push Linux load averages upward even when CPU usage is not the primary bottleneck. The important part is identifying what the processes are actually waiting for.
A server may report load averages such as 8, 15 or 30, but that number alone does not identify the bottleneck.
Processes actively consume available CPU time and runnable processes wait for access to the processors.
Processes can remain blocked while waiting for storage, increasing load even when CPU utilization is moderate.
PHP workers, databases, cron jobs or background tasks can generate either CPU pressure, I/O pressure or both.
The busiest-looking process does not always explain the load. Running, waiting and blocked process states can point to very different bottlenecks.
Processes waiting in uninterruptible sleep can be an important sign that part of the workload is blocked outside normal CPU execution.
Load average and CPU utilization
CPU idle and I/O wait percentages
Running and blocked process counts
Processes in D state
Disk latency and utilization
Application and database activity
High load becomes useful only when it is compared with what the server is actually waiting on.
Processor utilization helps distinguish genuinely CPU-bound workloads from problems where the processors are not the limiting resource.
Running and blocked processes provide important context. A large number of processes waiting outside the CPU can produce high load for a very different reason.
Elevated I/O wait, blocked work and storage latency can indicate that the workload is being delayed by disk activity rather than processor capacity.
PHP, databases, scheduled jobs and background workloads can create the pressure seen at system level, so the infrastructure symptoms have to be connected back to application activity.
CPU saturation normally appears as consistently high processor utilization with runnable work competing for available CPU time.
The next step is identifying what creates that work: PHP execution, database queries, compression, application loops, background jobs or abusive traffic.
Low CPU idle time
Sustained CPU-heavy processes
Large runnable process queue
PHP or application worker pressure
Database CPU consumption
Traffic-driven application execution
A server can feel completely overloaded while CPU usage remains relatively low if processes spend their time waiting for storage.
This can happen during database activity, backups, large log writes, filesystem operations or workloads competing for slow storage.
Elevated I/O wait
Processes blocked in D state
High disk utilization
Elevated storage latency
Database or backup activity
Large or continuous filesystem operations
Increasing CPU capacity does not solve a storage bottleneck, and changing disk configuration does not solve a runaway application consuming every CPU core.
The load average is an alert that work is waiting. The troubleshooting process has to determine what that work is waiting for before changes are made.