10 вещей, которые нужно проверить в первую очередь, когда Linux-сервер начинает работать медленно
Это перевод оригинальной статьи 10 Things I Check First When a Linux Server Becomes Slow.
Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.
Если вы работаете системным администратором, вам уже знаком этот момент. Звонит телефон. Начинают появляться оповещения о неисправностях, жалобы пользователей, и вдруг все ожидают, что вы немедленно устраните проблему.
Самое неприятное — не медленный сервер. Самое неприятное — не знать, куда смотреть в первую очередь.
В начале своей карьеры я много раз совершал эту ошибку. Я открывал случайные логи, перезапускал сервисы и запускал разные команды без четкого понимания направления. Иногда проблема устранялась. Иногда становилось только хуже.
Со временем я понял одну важную вещь. Когда Linux-сервер начинает работать медленно, проблема обычно возникает в нескольких распространенных местах.
Теперь я каждый раз следую одному и тому же простому чек-листу. Это экономит время, снижает стресс и помогает быстрее найти проблему.
Вот десять первых вещей, которые я проверяю, когда Linux-сервер начинает тормозить.
1. Проверьте загрузку процессора
Первое, что я проверяю, — это загрузка CPU. Если процессор перегружен, всё на сервере начинает работать медленно.
top
htop
Эти команды быстро показывают, какой процесс использует больше всего CPU.
Иногда проблема заключается в зависшем процессе. Иногда это скрипт, работающий в цикле. Иногда задача резервного копирования запускается не в то время.
Как только вы определите процесс, вы сможете решить, остановить его, перезапустить или продолжить расследование.
2. Проверьте использование памяти
Недостаток памяти может очень быстро замедлить работу сервера.
Для проверки использования памяти я выполняю следующую команду:
free -m
Если в системе заканчивается оперативная память, Linux начинает использовать swap. swap работает гораздо медленнее, чем оперативная память. Когда это происходит, система начинает работать медленно.
Обратите внимание на высокое использование swap или очень низкий уровень доступной памяти. Обычно это означает, что какой-то процесс потребляет слишком много оперативной памяти.
3. Проверьте свободное место на диске
Заполненный диск может вызвать множество странных проблем.
Я проверяю использование дискового пространства с помощью:
df -h
Если какой-либо раздел заполнен почти на 100 процентов, приложения могут начать работать со сбоями или медленно.
Часто причиной являются логи. Иногда старые резервные копии заполняют диск, и никто этого не замечает.
Удаление неиспользуемых файлов может сразу улучшить производительность.
4. Проверьте активность дискового ввода-вывода
Иногда диск не заполнен, но при этом всё равно сильно загружен.
Чтобы проверить дисковую активность, я использую:
iostat
iotop
Эти инструменты показывают, какие процессы интенсивно читают или записывают данные на диск.
Высокая дисковая активность часто связана с обработкой логов, резервным копированием или операциями базы данных.
Когда узким местом становится дисковый ввод-вывод, даже простые команды могут выполняться медленно.
5. Проверьте Load Average
Показатель средней загрузки сервера позволяет понять насколько загружен сервер.
Его можно посмотреть с помощью:
uptime
top
Если Load Average значительно выше количества ядер CPU, значит система испытывает высокую нагрузку.
Обычно это означает, что процессы ожидают доступа к ресурсам ЦП, диска или другим ресурсам.
6. Проверьте запущенные процессы
Иногда всю проблему создает один-единственный процесс.
Я проверяю запущенные процессы с помощью:
ps aux
Обратите внимание на процессы, которые используют слишком много CPU или памяти. Также проверьте, не запущено ли одновременно слишком много процессов.
Такое часто происходит из-за ошибок приложений или неправильно настроенных скриптов.
7. Проверьте сетевые проблемы
Медленная работа сервера не всегда является проблемой самого сервера. Иногда это проблема сети.
Я проверяю сетевое подключение с помощью:
ping
ss -tulnp
Если сетевые соединения перегружены или зависли, приложения могут казаться медленными, даже если сам сервер работает нормально.
8. Проверьте последние логи
Логи часто рассказывают настоящую историю.
Обычно я проверяю системные логи с помощью:
journalctl -xe
или просматриваю файлы логов в каталоге /var/log.
Ошибки, связанные с сервисами, дисками или памятью, часто появляются именно здесь.
Очень часто ответ уже написан в логах. Нужно лишь посмотреть.
9. Проверьте сервисы и приложения.
Иногда с операционной системой всё в порядке, но проблемы испытывает приложение.
Например, веб-сервер, база данных или фоновый процесс могут быть перегружены.
Я проверяю состояние сервиса с помощью:
systemctl status
Перезапуск зависшего сервиса иногда позволяет восстановить нормальную производительность.
Но всегда важно понимать, почему это вообще произошло.
10. Проверьте последние изменения
Этот шаг часто игнорируют, но он очень важен.
Возможно, произошло новое развертывание. Возможно, была добавлена задача cron. Возможно, была изменена конфигурация.
Многие случаи медленной работы сервера вызваны недавними изменениями. Понимание того, что именно изменилось, может быстро привести вас к настоящей причине проблемы.
В заключение
Медленный сервер может очень быстро вызвать раздражение. Пользователи недовольны. Команды начинают задавать вопросы. Напряжение быстро нарастает.
Но большинство проблем с производительностью развиваются по одному и тому же сценарию.
ЦП, память, диск, процессы, сеть или последние изменения.
Вместо того чтобы наугад перебирать разные команды, следование четкому контрольному списку значительно упрощает поиск и устранение неисправностей.
За эти годы этот простой ритуал сэкономил мне много часов и избавил от множества стрессовых утренних часов.
И в конечном итоге каждый системный администратор усваивает один и тот же урок.
Когда Linux-сервер начинает работать медленно, причина обычно кроется на виду. Нужно просто сначала поискать в нужных местах.
На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.