Иногда бывает так: есть 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

ps_mem