Разделы документации
Размеры приложения
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 МБ и посмотри на метрики за сутки.
- Память близка к 100% или есть перезапуски: возьми размер побольше. Память не сжимается, поэтому приложению, которому её не хватило, помогает только больший размер.
- Процессор стоит около 100%, а ответы медленные: возьми размер побольше.
- Метрики спокойные, но время ответа скачет, когда на платформе шумно: переходи с Eco на High того же объёма.
- Запас большой: размер можно снизить, и ты заплатишь меньше.
Приложению с редкими запросами High обычно не нужен: Eco хватает, пока ровное время ответа не требуется. Продакшн с оплатой и API под нагрузкой - случай для High.
Как сменить размер
Размер меняется в любой момент, пересоздавать приложение не нужно. Правка сама ничего не деплоит: каждая версия снимает настройки в момент заказа, поэтому новый размер доезжает со следующим деплоем. Пока он идёт, работающая версия отвечает на прежнем размере.
В панели:
- Открой приложение и перейди на вкладку «Настройки».
- В карточке «Мощность» выбери вид, Eco или High, и размер. Панель показывает цену выбранного размера и сколько места он займёт в проекте.
- Отметь «Задеплоить после сохранения» и нажми «Сохранить и задеплоить». Без отметки «Сохранить» только запишет размер, и он подхватится ближайшей версией.
У приложения из репозитория деплой собирает код заново, поэтому вместе с размером выкатится и свежее состояние ветки. У приложения из архива отметки в настройках нет: каждой версии нужен свой архив, и новый размер приедет с ним. У приложения из готового образа версия возьмёт ссылку на образ, записанную в приложении.
По 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