#Симптом и границы применимости
Низкая общая загрузка CPU не исключает ожидание базы, диска, внешнего API, блокировки PHP-сессий или насыщение отдельного пула PHP-FPM. Сравнивайте одинаковые запросы соседних сайтов.
Эта инструкция относится к конкретному сайту в панели управления хостингом, когда его обслуживают Nginx, Apache, PHP-FPM или их сочетание. Названия разделов и доступность SSH зависят от установленной панели и прав пользователя; шаги, которых нет в вашем интерфейсе, выполняет администратор сервера.
#Возможные причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Очередь пула PHP-FPMУ одного сайта исчерпан pm.max_children | В журнале пула сообщение о максимальном числе детей | Уменьшить блокировки и оценить память перед изменением пула |
| Ожидание базы/сетиСкрипт ждёт запрос SQL либо внешний сервис | Веб-сервер ждёт upstream, но CPU свободен | Найти медленный участок и время ответа |
| Диск или блокировкиОперации чтения/записи задерживаются | Повышенное iowait, долгие файловые операции | Проверить свободное место и задержки диска |
#Пошаговая диагностика и исправление
- Измерьте только проблемный URLВыберите неизменяемую страницу каждого сайта и сравните время ответа в одинаковое время. Не запускайте нагрузочное тестирование на рабочем сервере без разрешения. Укажите домен, код ответа и примерный разброс времени.
- Отделите время установления соединения от обработкиС собственного компьютера выполните несколько обычных GET-запросов к обеим страницам. Показатель time_starttransfer включает сеть и обработку, а time_total — полную загрузку тела. Сравнивайте только сопоставимые страницы.
- Без административных прав; команда не создаёт нагрузку больше одного запросаLinux · Терминал (Bash)КомандаБез административных прав; команда не создаёт нагрузку больше одного запроса. Замените домен.
curl -sS -o /dev/null -w "код=%{http_code} начало=%{time_starttransfer} всего=%{time_total}\n" https://example.com/
- Проверьте выбранную версию PHP и пулВ панели убедитесь, что сайт не привязан к устаревшему обработчику. Если PHP-FPM отдельный, по имени пула найдите его журнал и число активных процессов. Не переносите настройки другого сайта без расчёта памяти.
- Изучите диагностические журналыСопоставьте по времени Nginx/Apache, PHP-FPM, CMS и базу данных. Если включён slowlog, изучите стек одного медленного запроса; без него не включайте общедоступную страницу статуса PHP-FPM.
- Проверьте диск и памятьНа сервере можно посмотреть доступное место, давление памяти и задержки I/O. Если свободно мало места, не удаляйте неизвестные каталоги; выясните источник роста.
- SSH; команды чтения, обычно без прав администратораLinux · Терминал (Bash)Только проверкаSSH; команды чтения, обычно без прав администратора. Они не показывают причину медленного SQL-запроса сами по себе.
df -hfree -h
- Разберите внешний сервис и базу отдельноЕсли тормозит только форма оплаты, авторизация или импорт, временно включите штатный профилировщик приложения на тестовом запросе. Сохраните обезличенное время SQL/внешнего API и обратитесь к конкретной операции, не повышая общие тайм-ауты вслепую.
- Исправьте узкое место и повторите замерДля исчерпанного пула сначала устраните зависшие скрипты, затем рассчитайте pm.max_children с учётом памяти. Для SQL — индекс/запрос после проверки на копии. Сравните задержку до и после и проверьте, что соседние сайты не стали медленнее.
#Проверка результата
Время ответа проблемного URL снизилось, журнал не показывает новых ошибок, а остальные сайты работают как прежде.
#Если проблема осталась
Если причина всё ещё неизвестна, соберите несколько обезличенных трасс с временными метками и показателями пула, диска и базы вместо изменения ресурсов наугад.
#Безопасный откат
Если после изменения ошибка усилилась, верните сохранённое значение только изменённого параметра и повторно проверьте конфигурацию используемого веб-сервера до применения. Не возвращайте всю базу или весь сервер из резервной копии, если достаточно откатить одну настройку. При отсутствии доступа к нужному уровню обратитесь к администратору с точными временем, адресом, кодом ответа и обезличенными фрагментами журналов.