Finding the actual bottleneck.
START BY MEASURING
Is the server slow, or is the application slow? Load a static file. If that is fast while pages are slow, the problem is the application or database, not the server.
CHECK RESOURCES
top or htop for CPU and memory, and which processes are consuming them free for memory pressure and swap usage df for disk space iostat for disk wait
High iowait means storage. High memory usage with swapping means memory. High CPU in one process means that process.
CHECK THE DATABASE
The slow query log identifies queries taking excessive time. This is where the problem lies more often than anywhere else.
Check whether the database is being restarted by the kernel under memory pressure.
CHECK THE APPLICATION
Application-level profiling identifies which code is slow. For WordPress, Query Monitor shows slow queries and plugin load times.
CHECK EXTERNALLY
Is traffic unusually high? Is it legitimate? Bot traffic frequently explains a sudden slowdown.
THE COMMON ANSWERS
Insufficient memory, a missing database index, no caching, or bot traffic. In roughly that order.