Appearance
Требования к ресурсам VPS для Partizap
Дата: 2026-03-06 Контекст: маркетплейс автозапчастей, регион СПб, стек PHP 8.3 + Slim 4 + Doctrine + PostgreSQL 16 + Redis 7 + Centrifugo + Nuxt 4 SSR
1. Инвентаризация сервисов и потребление памяти
1.1 Текущий снимок (один VPS 6 vCPU / 12 GB RAM / 120 GB SSD)
| Группа | Сервис | RAM (факт) | Примечание |
|---|---|---|---|
| DevOps | GitLab Puma (2 воркера) | 2 100 MB | Было 6 воркеров (~6 ГБ), урезано |
| GitLab Sidekiq | 1 070 MB | concurrency=10 | |
| GitLab Gitaly | 180 MB | ||
| GitLab PostgreSQL | 1 210 MB | Отдельный инстанс PG для GitLab | |
| GitLab Redis | 19 MB | ||
| YouTrack (Docker, Java) | 1 550 MB | JVM heap урезан до 512m | |
| Docker daemon | 790 MB | Только для YouTrack | |
| Итого DevOps | ~6 920 MB | ||
| Dev-сервер | PHP-FPM pool partizap-dev (2–5 workers) | ~70 MB | max_children=5 |
| Nuxt dev (PM2 + Node) | ~70 MB | ||
| Centrifugo dev | ~25 MB | ||
| Итого Dev | ~165 MB | ||
| Prod-сервер | PHP-FPM pool partizap-prod (5–20 workers) | ~160 MB | max_children=20, сейчас 5 активных |
| Nuxt prod (PM2 + Node) | ~70 MB | ||
| Centrifugo prod | ~28 MB | ||
| Итого Prod | ~258 MB | ||
| Общие | PostgreSQL 16 (partizap_dev + partizap_prod) | ~200 MB | shared_buffers=128 MB |
| Redis 7 (4 БД) | ~22 MB | ||
| PgBouncer | ~5 MB | Только prod | |
| Nginx | ~113 MB | Все vhosts | |
| ОС + systemd + sshd | ~500 MB | ||
| Итого общие | ~840 MB | ||
| Claude Code (dev-инструмент) | ~700 MB | Эпизодически | |
| ИТОГО | ~8 883 MB | Из 12 288 MB |
Вывод: DevOps-инструменты занимают 78% всей используемой памяти. Маркетплейс (dev + prod + общие) — всего ~1 260 MB.
2. Прогноз потребления при росте трафика
2.1 Prod-сервер (маркетплейс)
Основные потребители, растущие с трафиком: PHP-FPM workers (~30–35 MB каждый), PostgreSQL (shared_buffers + connections), Centrifugo (WebSocket-соединения).
| DAU | RPS (пик) | PHP-FPM workers | PHP-FPM RAM | PG shared_buffers | PG total | Redis | Centrifugo | Nuxt SSR | Nginx | Итого Prod |
|---|---|---|---|---|---|---|---|---|---|---|
| до 500 | 10–20 | 5 | 175 MB | 128 MB | 300 MB | 50 MB | 30 MB | 70 MB | 50 MB | 675 MB |
| 500–2 000 | 20–50 | 10 | 350 MB | 256 MB | 500 MB | 100 MB | 50 MB | 140 MB | 80 MB | 1 220 MB |
| 2 000–5 000 | 50–100 | 15 | 525 MB | 512 MB | 800 MB | 150 MB | 80 MB | 140 MB | 100 MB | 1 795 MB |
| 5 000–15 000 | 100–300 | 25 | 875 MB | 1 024 MB | 1 500 MB | 200 MB | 150 MB | 280 MB | 120 MB | 3 125 MB |
| 15 000–50 000 | 300–800 | 40 | 1 400 MB | 2 048 MB | 3 000 MB | 300 MB | 300 MB | 560 MB | 150 MB | 5 710 MB |
2.2 Dev-сервер
Не зависит от пользовательского трафика. Зависит от интенсивности разработки.
| Сценарий | PHP-FPM | Nuxt | Centrifugo | PG | Итого Dev |
|---|---|---|---|---|---|
| Неактивная разработка | 70 MB | 70 MB | 25 MB | (общий) | 165 MB |
| Активная разработка (1–2 чел.) | 175 MB | 140 MB | 25 MB | (общий) | 340 MB |
| Интенсивная (CI/CD, тесты) | 350 MB | 140 MB | 25 MB | (общий) | 515 MB |
2.3 DevOps-инструменты
| Сценарий | GitLab | YouTrack | Docker | Итого DevOps |
|---|---|---|---|---|
| Минимальный (2 puma, concurrency=5) | 3 500 MB | 1 000 MB | 400 MB | 4 900 MB |
| Текущий (2 puma, concurrency=10) | 4 600 MB | 1 550 MB | 790 MB | 6 940 MB |
| Комфортный (4 puma, concurrency=20) | 7 000 MB | 2 000 MB | 800 MB | 9 800 MB |
3. Вариант A: Один VPS на всё
Формула: DevOps + Dev + Prod + Общие + ОС + запас 20%
| DAU | DevOps (мин.) | Dev (актив.) | Prod | Общие + ОС | Итого (×1.2) | Рекомендация RAM | vCPU | SSD |
|---|---|---|---|---|---|---|---|---|
| до 500 | 4 900 | 340 | 675 | 840 | 8 106 | 8 GB (впритык) | 4 | 80 GB |
| до 2 000 | 4 900 | 340 | 1 220 | 840 | 8 760 | 12 GB | 4 | 80 GB |
| до 5 000 | 4 900 | 340 | 1 795 | 1 040 | 9 690 | 12 GB | 6 | 120 GB |
| до 15 000 | 4 900 | 340 | 3 125 | 1 240 | 11 526 | 16 GB | 6–8 | 120 GB |
| до 50 000 | 4 900 | 515 | 5 710 | 1 440 | 15 078 | 16–24 GB | 8 | 200 GB |
Текущий VPS (12 GB) покрывает сценарий до ~2 000 DAU, но без запаса. Swap в 6 ГБ компенсирует, но деградирует производительность.
При текущей конфигурации (12 GB) и активной разработке VPS работает на пределе. GitLab + YouTrack занимают ~7 ГБ, оставляя маркетплейсу ~4 ГБ (с ОС). Для комфортной работы нужно 16 GB уже сейчас.
4. Вариант B: Два VPS (рекомендуемый)
VPS 1 — Маркетплейс (prod + dev)
Без GitLab и YouTrack система потребляет ~1 260 MB при текущей нагрузке.
| DAU | Dev | Prod | PG + Redis | Nginx + ОС | Итого (×1.2) | RAM | vCPU | SSD | Стоимость* |
|---|---|---|---|---|---|---|---|---|---|
| до 2 000 | 340 | 1 220 | 700 | 600 | 3 432 | 4 GB | 2 | 40 GB | 500–800 ₽ |
| до 5 000 | 340 | 1 795 | 1 100 | 650 | 4 662 | 6 GB | 4 | 60 GB | 800–1 200 ₽ |
| до 15 000 | 340 | 3 125 | 1 700 | 700 | 7 038 | 8 GB | 4–6 | 80 GB | 1 200–1 800 ₽ |
| до 50 000 | 515 | 5 710 | 3 500 | 750 | 12 570 | 16 GB | 8 | 120 GB | 2 500–4 000 ₽ |
VPS 2 — DevOps (GitLab + YouTrack)
| Режим | GitLab | YouTrack | Docker + ОС | Итого (×1.2) | RAM | vCPU | SSD | Стоимость* |
|---|---|---|---|---|---|---|---|---|
| Минимальный (1–2 разработчика) | 3 500 | 1 000 | 900 | 6 480 | 8 GB | 2 | 40 GB | 700–1 000 ₽ |
| Комфортный (команда 3–5 чел.) | 5 500 | 1 500 | 1 000 | 9 600 | 12 GB | 4 | 60 GB | 1 200–1 800 ₽ |
| Полный (CI runners, registry) | 7 000 | 2 000 | 1 200 | 12 240 | 16 GB | 4 | 80 GB | 1 800–2 500 ₽ |
*Цены ориентировочные для Selectel/Timeweb/REG.RU на март 2026.
Альтернатива: облачные DevOps-сервисы (вместо VPS 2)
| Сервис | Бесплатный тариф | Экономия RAM |
|---|---|---|
| GitLab.com (SaaS) | До 5 пользователей, 5 ГБ хранилище, 400 CI-минут/мес | ~4 600 MB |
| YouTrack Cloud (JetBrains) | До 10 пользователей | ~1 550 MB |
| Итого | ~6 150 MB |
При переходе на облачные DevOps VPS 2 не нужен совсем. Текущий VPS (12 GB) будет иметь ~10 ГБ свободной RAM для маркетплейса — хватит до 50 000+ DAU.
5. Рекомендуемые конфигурации
5.1 Сейчас (старт, до 2 000 DAU, 1–2 разработчика)
Вариант «Один VPS» (минимум):
| Параметр | Значение |
|---|---|
| vCPU | 4 |
| RAM | 16 GB |
| SSD | 120 GB |
| ОС | Debian 12 |
| Swap | 6 GB |
Вариант «Два VPS» (рекомендуемый):
| VPS 1 (маркетплейс) | VPS 2 (DevOps) | |
|---|---|---|
| vCPU | 2 | 2 |
| RAM | 4 GB | 8 GB |
| SSD | 40 GB | 40 GB |
| Итого | ~500–800 ₽/мес | ~700–1 000 ₽/мес |
5.2 Рост (2 000–10 000 DAU, команда 3–5 чел.)
| VPS 1 (маркетплейс) | VPS 2 (DevOps) | |
|---|---|---|
| vCPU | 4 | 4 |
| RAM | 8 GB | 12 GB |
| SSD | 80 GB | 60 GB |
5.3 Масштаб (10 000–50 000 DAU)
| VPS 1 (маркетплейс) | VPS 2 (DevOps) | |
|---|---|---|
| vCPU | 6–8 | 4 |
| RAM | 16 GB | 12 GB |
| SSD | 120 GB | 60 GB |
На этом этапе рассмотреть вынос PostgreSQL в managed DB (Selectel, Yandex Cloud) и добавление read-replica.
6. Рекомендации по оптимизации текущего VPS
Если пока остаёмся на одном VPS (12 GB), для выживания:
| Действие | Экономия RAM | Риск |
|---|---|---|
| Перенести GitLab на GitLab.com | ~4 600 MB | Миграция репозиториев и CI |
| Перенести YouTrack в облако | ~1 550 MB | Миграция задач |
| Убрать Docker daemon (YouTrack) | ~790 MB | Только если YouTrack уехал |
| Увеличить RAM до 16 GB | +4 096 MB | Стоимость |
| Уменьшить PG shared_buffers до 64 MB | ~64 MB | Незначительная деградация |
Приоритетная рекомендация: перенести GitLab + YouTrack в облако (бесплатно) — освободится ~6 ГБ RAM, текущего VPS хватит на годы роста.
7. Узкие места по ресурсам при росте
| Ресурс | Когда станет узким | Решение |
|---|---|---|
| RAM | >5 000 DAU на 4 GB VPS | Увеличить RAM или вынести PG |
| CPU | >10 000 DAU (PHP-FPM + PG) | Добавить vCPU или горизонтально масштабировать PHP |
| Диск | >100К товаров, ~5–10 GB БД | Увеличить SSD. Изображения на S3 — не проблема |
| Сеть | >500 RPS | CDN для статики, S3 для изображений (уже сделано) |
| PG connections | >100 одновременных | PgBouncer уже настроен. Увеличить max_connections |
| WebSocket | >10К одновременных | Centrifugo держит 100К+ на 1 ГБ RAM — не проблема |