Требования к серверу
Рекомендованные требования
Заголовок раздела «Рекомендованные требования»| Минимум | Рекомендуется | |
|---|---|---|
| Процессор | 1 ядро | 2 ядра |
| Память | 1 ГБ | 2 ГБ |
| Диск | 2 ГБ свободно | 5 ГБ свободно |
- Архитектура: x86-64 или ARM64.
- Система: Linux с Docker и Docker Compose v2.
- Видеокарта: не нужна.
Если бот стоит на одном сервере с панелью, прибавьте эти цифры к требованиям панели.
Результаты симуляций
Заголовок раздела «Результаты симуляций»Как мерили
- Запускался настоящий бот версии 1.9.2. Telegram отвечал с задержкой 60 мс, панель — 20 мс.
- Бот и база работали на одном ядре процессора.
- В базе 10 тыс. или 100 тыс. пользователей, по 3 оплаты на каждого.
- Чат:
/startи кнопки меню (покупка, подписки, баланс, пополнение) от случайных пользователей. - Мини-апп и кабинет: вход, профиль, меню, подписка, тарифы, кошелёк, сама страница. В кабинете около 3% запросов — вход по паролю.
- Каждая нагрузка держалась 30–40 секунд. Процессор — среднее за это время, память — пик.
- PostgreSQL 16 с настройками по умолчанию (бот ставит 17-ю версию).
Для ориентира: 5 нажатий в секунду — это уже очень оживлённый бот.
Процессор и память бота на одном ядре
Процент — загрузка этого одного ядра: 30% значит, что ядро занято примерно на треть.
| Нагрузка | SQLite, 10 тыс. | SQLite, 100 тыс. | PostgreSQL, 10 тыс. | PostgreSQL, 100 тыс. |
|---|---|---|---|---|
| Простой | 0% · 31 МБ | 0% · 31 МБ | 0% · 30 МБ | 0% · 30 МБ |
| Чат, 5 нажатий/с | 2% · 43 МБ | 3% · 44 МБ | 2% · 36 МБ | 2% · 35 МБ |
| Чат, 25 нажатий/с | 9% · 45 МБ | 10% · 46 МБ | 9% · 37 МБ | 9% · 37 МБ |
| Чат, 100 нажатий/с | 28% · 50 МБ | 32% · 53 МБ | 33% · 44 МБ | 30% · 45 МБ |
| Мини-апп, 50 запросов/с | 5% · 49 МБ | 6% · 51 МБ | 7% · 43 МБ | 6% · 44 МБ |
| Мини-апп, 200 запросов/с | 16% · 52 МБ | 17% · 54 МБ | 20% · 45 МБ | 19% · 46 МБ |
| Кабинет, 50 запросов/с | 17% · 54 МБ | 17% · 63 МБ | 15% · 47 МБ | 18% · 55 МБ |
| Смешанная: чат 25 + мини-апп 100 + кабинет 30 | 23% · 56 МБ | 24% · 67 МБ | 29% · 49 МБ | 29% · 60 МБ |
| Стресс: чат 100 + мини-апп 300 + кабинет 100 | 68% · 68 МБ | 70% · 83 МБ | 61% · 67 МБ | 62% · 84 МБ |
У SQLite база работает внутри процесса бота, поэтому её доля уже входит в цифры. PostgreSQL — отдельный контейнер: сверху он занимал 160–180 МБ памяти и не больше 6% ядра.
Время ответа, мс (медиана / 95%)
| Нагрузка | SQLite, 10 тыс. | SQLite, 100 тыс. | PostgreSQL, 10 тыс. | PostgreSQL, 100 тыс. |
|---|---|---|---|---|
| Чат, 25 нажатий/с | 141 / 208 | 139 / 207 | 142 / 212 | 141 / 210 |
| Чат, 100 нажатий/с | 143 / 235 | 142 / 212 | 211 / 341 | 187 / 292 |
| Мини-апп, 200 запросов/с | 1 / 65 | 1 / 65 | 2 / 66 | 2 / 66 |
| Кабинет, 50 запросов/с | 1 / 76 | 1 / 76 | 2 / 76 | 2 / 77 |
| Смешанная — чат | 145 / 262 | 141 / 215 | 198 / 375 | 174 / 346 |
| Смешанная — мини-апп | 1 / 66 | 1 / 66 | 8 / 119 | 5 / 105 |
| Стресс — чат | 201 / 365 | 196 / 378 | 360 / 703 | 346 / 780 |
| Стресс — мини-апп | 8 / 116 | 12 / 135 | 68 / 274 | 70 / 313 |
Почти всё время ответа в чате — это два обращения к Telegram по 60 мс, заложенные в симуляцию. Сам бот тратит на нажатие единицы миллисекунд.
Размер базы
| 10 тыс. пользователей | 100 тыс. пользователей | |
|---|---|---|
| SQLite | 10 МБ | 54 МБ |
| PostgreSQL | 17 МБ | 92 МБ |
Образ бота занимает на диске около 100 МБ.
Итог
- Ни одна нагрузка не упёрлась в одно ядро, и ни один запрос не завершился ошибкой.
- Память бота не выходила за 85 МБ.
- Число пользователей в базе на нагрузку почти не влияет.
- Когда бот и PostgreSQL делят одно ядро, PostgreSQL под пиковой нагрузкой отвечает медленнее SQLite.