Сколько это стоит
Сколько памяти и процессора нужно Telegram-боту
Коротко
Обычному Telegram-боту хватает 1 ГБ оперативной памяти и половины процессорного ядра — столько даёт тариф Pro за $4.99 в месяц. Бот почти всё время ждёт сообщений и нагрузки не создаёт; память ему нужна на библиотеки, а процессор — только в моменты ответа. Больше ресурсов требуется, если бот обрабатывает картинки и видео, держит тяжёлую базу или считает что-то сам, а не просит внешний сервис.
Выбирая сервер под бота, легко купить лишнего: тарифы в облаках расписаны в ядрах и гигабайтах, а сколько из этого нужно боту, который отвечает сотне человек в день, нигде не написано. Обычно — совсем немного. Бот большую часть времени просто ждёт сообщения и в этот момент не тратит ни процессор, ни диск.
Разберём по порядку: на что боту нужна память, когда ему не хватает процессора и как понять, что упёрлись в потолок, а не в ошибку в коде.
Поймите, на что уходит память#
Основную память съедает не ваш код, а библиотеки, которые он подтягивает. Бот на aiogram или Telegraf с парой десятков команд занимает считанные десятки мегабайт. Резко больше становится, когда в проект приезжают тяжёлые пакеты: обработка изображений, аналитика с таблицами, браузер для парсинга. Если такого нет, памяти боту нужно немного.
Не путайте нагрузку с постоянной работой#
Бот занят круглосуточно, но не нагружен круглосуточно: между сообщениями он спит на ожидании и почти ничего не потребляет. Процессор нужен вспышками — в момент ответа. Поэтому «бот работает 24 часа» и «боту нужен мощный сервер» — совершенно разные утверждения, и второе почти никогда не следует из первого.
Сравните с тем, что даёт тариф#
На бесплатном тарифе проект получает 256 МБ памяти, 0,25 ядра и 2 ГБ места — этого достаточно, чтобы бот собрался, запустился и отвечал на команды. На Pro ($4.99 в месяц) — 1 ГБ памяти, 0,5 ядра и 5 ГБ места. В этот размер спокойно помещается бот с базой на SQLite, картинками, кнопками и парой фоновых задач.
Узнайте признаки нехватки#
Нехватка памяти выглядит одинаково: бот внезапно перезапускается, а в логах обрывается на середине работы без внятной ошибки. Нехватка процессора выглядит иначе — бот отвечает, но с задержкой, и она растёт вместе с числом одновременных сообщений. Если же бот отвечает мгновенно, а потом молчит навсегда, дело почти наверняка в коде, а не в ресурсах.
Смотрите на цифры, а не на ощущения#
В кабинете видно, сколько памяти и процессора проект использует на самом деле, и как это менялось. Прежде чем брать сервер побольше, посмотрите график: чаще всего он показывает, что бот использует малую долю выданного, а тормозит из-за медленного внешнего сервиса или тяжёлого запроса к базе.
Выносите тяжёлое наружу#
Если боту действительно нужно что-то тяжёлое — распознать речь, сгенерировать текст, обработать видео, — почти всегда дешевле обратиться к внешнему сервису по API, чем держать всё это на своём сервере. Тогда боту снова хватает скромных ресурсов, а платите вы за фактическое использование тяжёлой части.
Боту редко нужен большой сервер: ему нужен маленький, но всегда включённый. Загрузите бота в Netrun и посмотрите на реальное потребление — первые 3 дня бесплатны.
Частые вопросы
Сколько оперативной памяти нужно Telegram-боту?
Обычному боту на aiogram, python-telegram-bot или Telegraf хватает нескольких десятков мегабайт, поэтому 1 ГБ на тарифе Pro — с запасом. Больше требуется только тяжёлым библиотекам: обработке изображений, аналитике с таблицами, встроенному браузеру.
Хватит ли боту ресурсов бесплатного тарифа?
Для проверки — да. На бесплатном тарифе проект получает 256 МБ памяти, 0,25 ядра и 2 ГБ места, и обычный бот в это укладывается. Ограничение бесплатного тарифа не в ресурсах, а во времени: бот работает 3 дня, дальше нужен Pro.
Сколько пользователей выдержит такой бот?
Зависит не от числа подписчиков, а от того, сколько человек пишут одновременно. Бот, который отвечает текстом и читает базу, спокойно обслуживает тысячи пользователей в день: между сообщениями он ничего не тратит. Упереться в потолок скорее получится на тяжёлых операциях, чем на количестве людей.
Как понять, что боту не хватает памяти?
Типичный признак — бот перезапускается сам, а в логах работа обрывается на середине без осмысленной ошибки. Задержки в ответах при этом обычно говорят не о памяти, а о медленном внешнем сервисе или тяжёлом запросе к базе.
Что делать, если ресурсов действительно не хватает?
Сначала посмотрите график потребления в кабинете: часто оказывается, что бот использует малую долю выданного. Если упор реальный, тяжёлую часть выгоднее вынести во внешний сервис по API, чем держать её рядом с ботом.
Нужен ли боту отдельный сервер?
Нет. Отдельный сервер нужен, когда проект действительно съедает машину целиком, а бот почти всегда занимает малую её часть. Разумнее платить за небольшой всегда включённый ресурс — $4.99 в месяц — чем за простаивающую машину.
Как понять, что с приложением всё в порядке?
На вкладке «Мониторинг» видно, что происходит с приложением прямо сейчас: сколько запросов к нему идёт, за сколько оно отвечает и были ли ответы с ошибкой, а ниже — нагрузка на процессор, память и место. Данные обновляются каждую минуту. На тарифе Pro к этому добавляются сутки целиком: работало ли приложение без перерывов, в какой час оно падало и как быстро отвечало. У ботов и фоновых скриптов запросов не бывает: к ним никто не приходит по ссылке, поэтому им показываем только работу без перерывов.
Чем отличается тариф Pro?
На тарифе Pro проект работает круглосуточно: сайт не засыпает и отвечает мгновенно, без паузы на пробуждение, а бот или фоновый скрипт работает постоянно, без ограничения в 3 дня. Кроме того, на Pro больше памяти, процессора и места, а к сайту можно подключить свои домены — столько, сколько нужно, каждый с HTTPS.
Засыпают ли боты и фоновые скрипты?
Нет, засыпают только сайты: сайт просыпается сам, когда его открывают. Бота и фоновый скрипт разбудить нечем — к ним никто не приходит по ссылке, они работают сами по себе. Поэтому на бесплатном тарифе они работают 3 дня, а дальше, чтобы бот работал круглосуточно, нужен тариф Pro.
Что будет, если приложение упадёт?
Мы следим за проектами и перезапускаем их при сбое. Если что-то идёт не так, вы видите статус и логи в кабинете и получаете уведомление.