Что я проверяю первым делом, когда «сайт лёг»

Иногда сообщение приходит лаконичное: «Сайт не открывается». В этот момент хочется не паниковать, а просто открыть чек-лист и пройтись по шагам.

Делюсь своим порядком действий, который работает и для Bitrix/WordPress, и для любого PHP-проекта.

1. Сначала проверяю, точно ли проблема на сервере

Минимум, который я делаю с ноутбука:

ping site.ru curl -I https://site.ru

Смотрю: • DNS нормально резолвится или домен вообще не отвечает • какой код приходит: 200/301/302, 403/404, 500/502/504 • есть ли ответ от nginx/Apache или вообще тишина по порту

Если DNS не жив или домен только что переносили — сначала решаю этот уровень.

2. Захожу на сервер и смотрю «температуру»

На сервере первым делом:

htop # груз по CPU и памяти df -h # свободное место на дисках free -h # память и swap

Типичные картины: • диск забит на 100% → логам негде писаться, БД не может записывать • память съедена, всё ушло в swap → любой запрос превращается в пытку • один процесс php-fpm или mysqld кушает весь CPU

Пока ресурсы не освобождены, бессмысленно ковырять код.

3. Проверяю веб-сервер и PHP-FPM

Дальше по цепочке:

systemctl status nginx systemctl status php-fpm journalctl -u nginx --no-pager -n 50 journalctl -u php-fpm --no-pager -n 50

Ищу: • падения процессов • ошибки конфигурации после последних правок • превышение лимита процессов PHP-FPM (pm.max_children)

Если после перезапуска сервисы не поднимаются — читаю лог, а не жму restart по кругу.

4. Смотрю базу данных

БД легко становится узким местом.

Минимум:

systemctl status mysql mysql -e "SHOW PROCESSLISTG" | head -n 20

Обращаю внимание: • есть ли висящие запросы в статусе Locked или Sending data • не уткнулся ли сервер в лимит подключений • не забита ли диск/папка с данными MySQL

При полном падении БД сайт обычно отдаёт 500 или Error establishing a database connection.

5. Логи проекта: что говорит сам сайт

Следующий слой — логи самого приложения: • для Laravel: storage/logs/laravel.log • для Bitrix: логи в /bitrix/php_interface/собственные обработчики • для WordPress: WP_DEBUG_LOG, свои файлы логов

Часто там видно: • фатальную ошибку после обновления PHP или пакетов • падение на конкретном модуле / плагине • ошибки подключения к внешним сервисам (CRM, платежи, API)

Задача — увидеть последний повторяющийся стек-трейс.

6. Быстрая изоляция проблемы

Когда понятно, что сервер жив, но сайт падает, я упрощаю маршрут: • пробую открыть простую info.php:

php phpinfo();

• если info.php работает, а основной сайт падает → проблема в проекте • если не работает даже info.php → смотрю PHP-FPM, nginx, модули

Иногда достаточно временно отключить свежий модуль/плагин, чтобы вернуть сайт к жизни и спокойно разобраться.