У меня регулярно PHP-приложение начинает медленно отвечать, при том что сервер по нагрузке норм — ЦП и память почти не загружены. Поискал, что можно сделать без покупки более мощного железа. Вот что пробовал и что реально помогает:
Сначала делаю профилирование кода через xdebug или Tideways — чтобы понять, где именно тормоза. Часто вылазит куча мелких запросов к БД вместо одного нормального, или слишком тяжелые циклы с ненужными функциями.
После этого проверяю кэширование. OPcache — первое, что надо включить, если ещё не включен, за счёт него PHP скорости на порядок прибавит. Ещё смотрю, можно ли локально или в памяти (например Redis) кешировать результаты запросов или объектов.
Оптимизирую запросы к базе — пытаюсь свести количество запросов на страницу к минимуму. Переезжаю с mysql_query на PDO с подготовленными запросами, чтобы ускорить, если есть возможность.
Из кода убираю ненужные подключения файлов — особенно в циклах. Автозагрузка классов и composer помогают, если настроить правильно.
Ещё смотрю на сессии — если они хранятся в базе или файлах и тормозят, можно переключить на memcached или Redis.
В общем, чаще всего реально спасает грамотный анализ bottlenecks и включение OPcache + локальный кэш. Кто как борется с такими тормозами в PHP без смены железа? Руки опускать рано?
У меня похожая фигня была, помогло отключение лишних плагинов и замена медленных запросов на более оптимальные через JOIN. OPcache — реально must-have, без него ждать нечего. Иногда скрипты тормозят из-за плохо написанных циклов, просто переписал часть кода и всё стало летать.