1. A large number of requests to the web server:
- The downloaded resource is broken/contains links to too many files (pictures, style sheets, JS scripts), which are loaded through separate requests. Try to combine resources into one file where possible.
- An element is installed on the site that periodically sends AJAX requests to the server (for example, chat). The number of requests depends not only on the number of visitors, but also on their habit of opening multiple tabs in the browser.
- Using resource elements or scripts on other people’s sites (links to pictures, informer scripts).
- DDoS attacks.
2. A large number of “heavy” or damaged CMS components.
Check all the components and plugins of your CMS, disabling them one by one, and find the heaviest or damaged ones, which slow down the loading of the site. If possible, discard such components, or look for a faster analogue. Also uninstall any unnecessary components that you do not use or whose use is not necessary.
3. A large number of slow queries to MySQL.
Install caching components in the engine that could reduce the number of SQL queries.
Optimize SQL queries.
Index the database tables by columns that are used in the selection
If all else fails, it may be worth changing the engine to a more optimal one.
4. Transferring large static files via PHP.
Large static files are best transferred directly, without using scripts. There are two reasons for this: firstly, the running time of the scripts is limited, after which the file transfer is interrupted; secondly, a separate worker process is used to transfer the file via PHP, which means it ceases to participate in the mechanism for processing requests from users.
5. Mailing list
It is best to launch a mailing script in the system task scheduler, which is controlled in the Plesk control panel. And schedule it to launch at the time of least load on the server (night according to Kyiv and Moscow time).