Сервер тормозит, сайт отвечает через раз. Прежде чем увеличивать тариф, выясните, во что именно упирается система: в процессор, память или диск. От этого зависит решение.
Load average
$ uptime$ nprocuptime показывает три числа — среднюю нагрузку за 1, 5 и 15 минут. Грубо: число процессов, которые работают или ждут процессора либо диска. Сравнивайте его с количеством ядер из nproc: на 2 ядрах load 2 — полная загрузка, 6 — очередь втрое длиннее, чем система успевает обработать.
Кто потребляет ресурсы
top есть везде. htop и btop нагляднее — ставятся одной командой:
$ apt install -y htop btop$ htop- В htop F6 выбирает сортировку: по CPU% или MEM%. F9 отправляет сигнал процессу.
- В top: Shift+P — сортировка по процессору, Shift+M — по памяти.
- Строка %Cpu(s) в top: us — программы, sy — ядро, wa — ожидание диска, st — время, которое у виртуальной машины забрал гипервизор.
Память
$ free -hСмотрите на столбец available, а не free: Linux занимает свободную память под кэш и отдаёт её программам по требованию. Мало available и активно используемый swap — памяти действительно не хватает.
$ ps aux --sort=-%mem | head -10OOM killer
Когда память кончается совсем, ядро завершает самый «тяжёлый» процесс. Со стороны это выглядит как внезапно упавшая база данных или приложение. Проверьте:
$ journalctl -k | grep -i -E 'out of memory|oom-kill'$ dmesg -T | grep -i oomЕсли записи есть — ограничьте память приложения (число воркеров, размер кэшей базы), добавьте swap как страховку или увеличьте тариф.
Диск
$ apt install -y iotop sysstat$ iotop -oPa$ iostat -x 2 5iotop покажет процессы, которые больше всего читают и пишут. В iostat обращайте внимание на %util и await: постоянные значения %util около 100 означают, что диск не успевает.
Частые причины
| Симптом | Что проверить |
|---|---|
| Много процессов php-fpm или gunicorn, память на исходе | Число воркеров: каждый занимает память, лишние ведут к swap и OOM |
| Процесс с непонятным именем грузит CPU на 100 % | Возможен майнер после взлома — см. статью «Что делать, если сервер взломали» |
| Высокий wa, работает база данных | Медленные запросы и отсутствие индексов |
| Нагрузка растёт в одно и то же время | Задачи cron, бэкапы, ротация логов |
Проверьте результат
После изменений понаблюдайте за uptime и free -h в часы пик. Чтобы сравнивать с прошлым, включите сбор истории метрик — об этом отдельная статья.