раздел 05

Логика управления

Управление мощностью - это цикл: смотрю метрики, нахожу узкое место, увеличиваю нужный ресурс, снова смотрю. Без метрик это гадание.

Шаг 1. Понять, чего не хватает

Сначала диагностика. Два пути:

  • Панель провайдера - у Selectel, DigitalOcean и др. есть графики загрузки CPU, RAM, диска и сети. Самый простой способ увидеть тренд и пики.
  • Команды на сервере - быстрая проверка прямо в терминале:
CPU
top или htop - загрузка по ядрам и кто грузит; uptime - load average (сравнить с числом ядер).
RAM
free -h - сколько памяти занято, есть ли swap.
Диск (место)
df -h - сколько занято; du -sh * - что именно занимает место.
Процессы
htop - отсортировать по CPU или памяти и увидеть главного потребителя.

Правило: узкое место - тот ресурс, который близок к 100% в моменты, когда всё тормозит. Если CPU 100%, а память свободна - проблема в CPU. Если падает по OOM - в RAM. Если df -h показывает заполненный диск - в диске.

Шаг 2. Нарастить мощность

Есть два способа увеличить мощность, и для новичка почти всегда подходит первый.

Вертикальное (scale up)
Увеличить ресурсы той же машины: больше CPU, RAM, диска. На облаке это resize - пара кликов в панели. Просто и подходит в 90% случаев.
Горизонтальное (scale out)
Добавить ещё серверов и распределить нагрузку между ними (балансировщик). Мощнее, но сложнее - нужно, когда одной машины уже мало.

Как делают resize (вертикальное)

1
Посмотреть метрики
Определить, какой ресурс упёрся (CPU, RAM или диск).
2
Сделать бэкап или снапшот
На всякий случай, перед изменением конфигурации.
3
Выбрать новую конфигурацию
В панели провайдера поднять нужный ресурс. Часто требуется короткая перезагрузка сервера.
4
Проверить
После рестарта убедиться, что сервис поднялся и метрики пришли в норму.

Не только «добавить»

Иногда правильнее не увеличивать ресурс, а убрать нагрузку: починить тяжёлый запрос к базе, включить кэш, почистить логи и старые докер-образы, вынести медиа в S3. Это бесплатно и часто решает проблему лучше, чем апгрейд.