Сервер редко «умирает» внезапно. Обычно он сначала долго намекает, что перегружен, — просто эти намёки некому заметить. Разбираем пять признаков, по которым видно, что серверу тяжело, ещё до того, как он начнёт ронять сайт.
1. Сайт «задумывается» под нагрузкой
Страницы открываются нормально утром и еле ползут в час пик или во время акции. Если скорость сайта зависит от количества посетителей — это классический признак, что ресурсов уже впритык.
2. Заканчивается место на диске
Один из самых частых и обидных сбоев. Диск заполняется логами, резервными копиями и загрузками — и в какой-то момент сайт просто перестаёт работать, потому что данные некуда записать. Это всегда видно заранее по графику свободного места.
3. Процессор и память постоянно «на пределе»
Если сервер всё время работает на максимуме, у него не остаётся запаса на пики. Любой всплеск трафика или тяжёлый запрос — и всё встаёт. Здоровый сервер большую часть времени должен иметь свободный ресурс.
4. В журналах копятся ошибки
Ошибки в логах — это симптомы, которые обычно никто не читает. «Не хватило памяти», «слишком много подключений к базе» — такие записи появляются задолго до реального падения.
5. Долго выполняются фоновые задачи
Резервные копии, отправка писем, обработка заказов начинают занимать всё больше времени. Пользователь пока ничего не замечает, но запас прочности уже тает.
Что с этим делать
Хорошая новость: почти всё это видно заранее — если за сервером кто-то наблюдает. Мониторинг как раз для того, чтобы эти пять признаков превратились в спокойное уведомление «пора добавить ресурсов», а не во внезапный простой в самый неудачный момент.
Перегруженный сервер почти всегда предупреждает о проблеме заранее. Вопрос только в том, слушает ли его кто-нибудь.
Как отличить перегрузку от других проблем
Медленный сайт не всегда означает слабый сервер. Прежде чем повышать тариф, стоит исключить три частые причины — все три лечатся без доплаты.
Тяжёлые запросы к базе. Один неоптимальный запрос — скажем, отчёт, который каждый раз перебирает все заказы за три года, — способен положить вполне приличный сервер. Признак: нагрузка скачет резко, а не растёт плавно вместе с посещаемостью.
Отсутствие кэширования. Если каждая страница собирается заново для каждого посетителя, сервер выполняет в десятки раз больше работы, чем требуется. Признак: нагрузка прямо пропорциональна числу людей на сайте.
Чужой трафик. Поисковые роботы, парсеры конкурентов и попытки перебора паролей нередко создают больше нагрузки, чем живые посетители. Признак: сервер занят, а в статистике посещений подозрительно тихо.
Если ни одна из трёх причин не подтвердилась — тогда да, ресурсов действительно не хватает.
Что делать, когда признаки появились
- Понять, что именно упирается в потолок: процессор, оперативная память, диск или база данных. Это четыре разные проблемы с четырьмя разными решениями.
- Посмотреть графики за месяц. Важен не сегодняшний день, а тенденция: нагрузка росла постепенно или подскочила разом? Скачок почти всегда означает конкретное событие — обновление, новый плагин, изменение в работе магазина.
- Разобраться с очевидными излишествами: отключить неиспользуемое, включить кэширование, почистить разросшиеся служебные таблицы.
- И только после этого добавлять ресурсы.
Когда увеличивать сервер не нужно
Довольно часто правильный ответ — не делать ничего. Если сервер выходит на предел два раза в год, во время распродаж, а в остальное время загружен на треть, платить круглый год за пиковую мощность бессмысленно. Дешевле подготовиться к этим двум дням отдельно.
Обратный случай тоже стоит назвать: если сервер стабильно живёт на восьмидесяти процентах и запаса нет вообще, ресурсы стоит добавить до первого падения, а не после. Разница в цене небольшая, разница в последствиях — принципиальная.
Коротко
Перегруженный сервер почти всегда предупреждает заранее. Просто предупреждения выглядят как «что-то сайт подтормаживает», и на них никто не реагирует, пока не станет поздно.
Взгляд на графики за прошедший месяц занимает пять минут и отвечает на вопрос, который иначе решается на эмоциях и обычно не в пользу кошелька.