nodbox
Разделы документации

Размеры приложения

Eco и High: чем они отличаются гарантией процессора, как выбрать размер и сменить его.

Размер определяет, сколько процессора и памяти получает приложение, и он же задаёт цену. Размеров шесть: Eco и High, у каждого по 256 МБ, 512 МБ или 1 ГБ памяти. Меняется размер в настройках приложения и применяется со следующей версией.

Шесть размеров и их цены

Цена названа за месяц круглосуточной работы. Месяц здесь равен 30 суткам, а списание идёт по минутам: приложение, которое работает не круглые сутки, стоит меньше. Минуты сна не тарифицируются, об этом - страница Сон и пробуждение.

Размер Имя в API Процессор Память Цена за месяц
Eco, 256 МБ eco-256 0,25 ядра 256 МБ 190 ₽
Eco, 512 МБ eco-512 0,5 ядра 512 МБ 380 ₽
Eco, 1 ГБ eco-1024 1 ядро 1 ГБ 760 ₽
High, 256 МБ high-256 0,25 ядра 256 МБ 590 ₽
High, 512 МБ high-512 0,5 ядра 512 МБ 1 190 ₽
High, 1 ГБ high-1024 1 ядро 1 ГБ 2 380 ₽

Процессор и память растут вместе: отдельно докупить память к маленькому процессору нельзя, размеров ровно шесть. Каталог с актуальными ценами отдаёт GET /api/v1/presets, цена в нём названа в копейках. Если не выбрать размер, приложение получает Eco, 512 МБ.

Размер есть и у веб-приложения, и у воркера. Воркер не засыпает, поэтому платит за все минуты своей работы. Чем они отличаются, разбирает страница Веб-приложения и воркеры.

Eco и High отличаются гарантией процессора

В паре Eco и High одного объёма процессор и память одинаковые, а цена различается чуть больше чем втрое. Разница в том, чем платформа ручается.

  • Eco. Процессор делится с соседями. За приложением закреплена четверть его доли, остальное оно берёт, пока соседи её не заняли. Под общей нагрузкой время ответа может плавать.
  • High. Процессор закреплён за приложением целиком, соседи на него не влияют. Время ответа ровное.

Память в обоих видах закреплена полностью и ни с кем не делится. High не быстрее Eco того же объёма: потолок у них один, High держит его стабильно.

Панель подсказывает, что для чего подходит:

Размер Для чего
Eco, 256 МБ бот или маленький сервис
Eco, 512 МБ сайт и небольшое API
Eco, 1 ГБ приложение с базой
High, 256 МБ небольшой сервис с ровным ответом
High, 512 МБ продакшн без всплесков
High, 1 ГБ магазин, оплата, API

Приложение получает купленное

Размер - потолок: приложение работает в границах купленных процессора и памяти. Что происходит у границы, зависит от ресурса.

  • Процессор. Приложение не падает. Оно получает меньше процессорного времени и отвечает медленнее.
  • Память. Платформа останавливает процесс приложения и запускает его заново. Всё, что процесс держал в памяти, теряется.

Потолок немного выше купленного: платформа оставляет небольшую долю для своих служебных нужд, и приложение иногда может в неё зайти. Опираться на неё нельзя, размер выбирай по купленному. Поэтому проценты в метриках могут быть больше ста: это правда о приложении, и платформа их не обрезает.

Нехватку размера видно в панели

Размер мал, когда приложение упирается в потолок. Признаки собраны в разделе «Наблюдаемость»:

  • Метрики. Процессор и память показаны в процентах от купленного размера. Рядом считаются перезапуски приложения. Подробности - Метрики приложения.
  • Состояние. Если приложение падает снова и снова, его состояние меняется на «Упало», когда платформа видит сбой. Слова разобраны на странице Состояния приложения.
  • Логи. Процесс, остановленный за память, не успевает ничего написать: лог обрывается на моменте остановки. Где смотреть строки, написано в разделе Логи приложения.
  • Деплой. Если приложению не хватило памяти ещё на запуске, версия не выкатывается. Причина - out_of_memory, а панель пишет: «Приложению не хватило памяти, и его процесс был остановлен. Возьми размер побольше». Отказ приходит примерно через минуту после запуска, а не по истечении всего срока деплоя. Другие причины отказа собраны в разделе Версии и откат.

Как выбрать размер

Начни с Eco, 512 МБ и посмотри на метрики за сутки.

  1. Память близка к 100% или есть перезапуски: возьми размер побольше. Память не сжимается, поэтому приложению, которому её не хватило, помогает только больший размер.
  2. Процессор стоит около 100%, а ответы медленные: возьми размер побольше.
  3. Метрики спокойные, но время ответа скачет, когда на платформе шумно: переходи с Eco на High того же объёма.
  4. Запас большой: размер можно снизить, и ты заплатишь меньше.

Приложению с редкими запросами High обычно не нужен: Eco хватает, пока ровное время ответа не требуется. Продакшн с оплатой и API под нагрузкой - случай для High.

Как сменить размер

Размер меняется в любой момент, пересоздавать приложение не нужно. Правка сама ничего не деплоит: каждая версия снимает настройки в момент заказа, поэтому новый размер доезжает со следующим деплоем. Пока он идёт, работающая версия отвечает на прежнем размере.

В панели:

  1. Открой приложение и перейди на вкладку «Настройки».
  2. В карточке «Мощность» выбери вид, Eco или High, и размер. Панель показывает цену выбранного размера и сколько места он займёт в проекте.
  3. Отметь «Задеплоить после сохранения» и нажми «Сохранить и задеплоить». Без отметки «Сохранить» только запишет размер, и он подхватится ближайшей версией.

У приложения из репозитория деплой собирает код заново, поэтому вместе с размером выкатится и свежее состояние ветки. У приложения из архива отметки в настройках нет: каждой версии нужен свой архив, и новый размер приедет с ним. У приложения из готового образа версия возьмёт ссылку на образ, записанную в приложении.

По API размер меняет PATCH /api/v1/applications/{id} с полем preset, а версию заказывает POST /api/v1/applications/{id}/revisions:

{ "preset": "high-512" }

Токену для PATCH нужны два права сразу: «деплоить» и «менять мощность». Для заказа версии хватает «деплоить». Права разобраны в разделе Токены и права.

Откат на прежнюю версию возвращает и её размер. Сегодняшние настройки приложения откат не подхватывает: их снимет следующий деплой.

Что бывает с деньгами при смене

Цена идёт за размером работающей версии, а не за размером в настройках. Сохранённый, но не выкаченный размер цену не меняет. Новая цена начинает действовать после выката: платформа сверяет цену раз в пять минут, поэтому смена может запоздать на несколько минут, и это время считается по прежней цене. Уже списанное не пересчитывается.

Сколько денег нужно на балансе, зависит от направления:

  • Размер больше. Для заказа версии нужны деньги на неделю содержания прироста цены. Если их не хватает, заказ отвечает 402.
  • Размер меньше и повторный деплой того же размера. Они проходят, даже если денег на нынешний размер уже не хватает: проект от них не дорожает.

Проект, заблокированный за долг, новую версию не закажет, а значит и размер не сменит.

Размер занимает место в проекте

У проекта есть лимиты на процессор и память. Приложение держит в них свой размер, умноженный на максимум экземпляров, и держит даже спящим или остановленным. По умолчанию лимиты проекта - 6 ядер и 6 ГБ на все приложения, из них выходит, например, шесть приложений Eco, 1 ГБ по одному экземпляру.

Проверка идёт в момент сохранения. Если размер больше и места нет, PATCH отвечает 403, а в ответе стоят занятое, лимит и запрошенное. Понижение место освобождает только после деплоя, пока работает экземпляр прежнего размера. Лимиты и как их поднять - в разделе Лимиты и квоты.

Что дальше


Страница в markdown, так её читает агент: /docs/apps/sizes.md