Один VPS держит сейчас четыре бота и этот сайт. Взял самый дешёвый Basic Droplet DigitalOcean — 1 vCPU, 961 МБ RAM, $6/мес. На старте казалось достаточно. Дальше — то, что реально произошло, когда ботов стало пять одновременно.

Момент, когда стало понятно, что тесно

При деплое ai-marketer процесс бота убился почти сразу после запуска голосовых сообщений — ядро включило OOM killer и просто прибило процесс, без внятной ошибки в логах бота, пока не полез смотреть dmesg. Пять Python-процессов по ~140 МБ каждый на сервере без свопа — памяти физически не хватало, и убивался то один процесс, то другой, не всегда предсказуемо какой.

Что сделал — и чего не сделал

Не стал сразу апгрейдить тариф. Добавил своп-файл 2 ГБ (/swapfile, vm.swappiness=10, закреплён в /etc/fstab) — по сути купил себе воздух ценой скорости при пиковой нагрузке, вместо того чтобы платить вдвое-вчетверо больше за RAM, которая большую часть времени простаивает.

Прямо сейчас, когда пишу это: free -h на сервере показывает 745 МБ занято из 961 МБ, свободно 139 МБ, а из 2 ГБ свопа уже используется 340 МБ. То есть система реально работает на грани и своп реально подключается, не просто числится в конфиге на всякий случай.

Почему не переехал сразу

Апгрейд тарифа DigitalOcean до 2 ГБ — это $12/мес, до 4 ГБ — $24/мес. Дешевле по деньгам за объём — Hetzner Cloud (CX23, 2 vCPU/4 ГБ, ≈€4-5.5/мес), но это перенос всех ботов с общего сервера разом, а не постепенный шаг. Решения по обоим вариантам пока нет — своп купил времени, чтобы не принимать это решение под давлением падающих процессов.

Честный вывод

$6/мес Basic Droplet — рабочий вариант для одного-двух лёгких ботов, но не для пяти одновременно с голосовыми сообщениями (Whisper держит модель в памяти). Своп — не решение проблемы тесноты, а способ не терять процессы, пока решение не принято осознанно, а не в панике посреди ночи, когда что-то упало.

Прежде чем разворачивать очередного бота на своей инфраструктуре — стоит проверить, во что реально упрётесь.

Написать в Telegram