Иногда бывает так: есть Linux сервер, на котором расположено веб-приложение, и он начинает “тормозить”.
Первым делом нужно проверить базовые параметры производительности:
-
Как сильно загружен процессор?
На это может ответить команда
top
или её более “красивый” аналогhtop
-
Сколько свободной оперативной памяти?
top
,htop
, а такжеfree -m
-
Не закончилось ли место на диске?
df -h
Допустим мы выяснили, что на сервере закончилась оперативная память.
Почему так произошло? Какая-то программа вышла из-под контроля. Осталось выяснить, какая именно.
Команды top
и htop
в этом не сильно помогают, так как показывают использование памяти отдельных процессов. Может быть так, что сам процесс потребляет мало памяти, но экземпляров этого процесса очень много и они съели всю память. В top
и htop
мы это не увидим.
На помощь придёт утилита ps_mem, которая группирует процессы по программам и показывает сколько суммарно потребляет каждая программа.
Увидим кто ест памяти больше всех, тогда и сможем понять и устранить причину.
Для примера, месяц назад на одном известном мне сервере закончилась память и причина оказалась в скрипте Node.js. Из-за ошибки в команде крона этот скрипт потихоньку плодил экземпляры, и постепенно сожрал всю память. Каждый отдельный процесс занимал около 600KB, но в сумме их было столько, что память на сервере закончилась.
Установка ps_mem
:
sudo pip install ps_mem
Использование ps_mem
:
sudo ps_mem