Сайзинг• Гайды по выбору

Как рассчитать нагрузку на сервер: формулы для веб-проектов и API

Формулы расчёта RPS, concurrent connections, потребления RAM и CPU. Нагрузочное тестирование через wrk и k6.

Обновлено: 2026-10-21T06:00:02.877Z
Время чтения: ~10 мин
Автор: Артём Савельев (DevOps-инженер)
Быстрый ответ & Краткая суть

Для расчёта нагрузки: 1) Определите RPS (запросов/сек) = DAU × Avg_Pages / 86400 × Peak_Factor. 2) Рассчитайте concurrent users = RPS × Response_Time. 3) CPU ≈ concurrent users / 2 (для PHP/Python). 4) RAM = workers × memory_per_worker + OS + СУБД. Для 50 000 DAU: ~60 RPS в пике → 4 vCPU, 8 ГБ RAM.

10K DAU~12 RPS → 2 vCPU, 4 ГБ RAM
50K DAU~60 RPS → 4 vCPU, 8 ГБ RAM
200K DAU~230 RPS → 8 vCPU, 16 ГБ RAM
1M DAU~1200 RPS → балансировка, кластер
Ключевые выводы и краткая суть
  • Формула Little: Concurrent Users = RPS × Avg Response Time (sec). 100 RPS × 0.2 сек = 20 concurrent.
  • Формула RAM для PHP: RAM_workers = max_children × memory_limit. 20 × 256 МБ = 5 ГБ.
  • Формула CPU: каждый worker PHP-FPM или Gunicorn потребляет ~1 ядро при полной загрузке.
  • Всегда тестируйте: wrk или k6 на staging-сервере покажут реальный потолок.

Шаг 1: Оцениваем RPS из бизнес-метрик

RPS (Requests Per Second) — главная метрика нагрузки. Считается из бизнес-данных:

RPS_avg = DAU × Pages_Per_Session / 86400

RPS_peak = RPS_avg × Peak_Factor (обычно 3–5× для e-commerce, 2–3× для контентных сайтов)

Пример: 50 000 DAU, 5 страниц за сессию, пик ×4 = 50000 × 5 / 86400 × 4 ≈ 12 RPS_avg, 46 RPS_peak. С учётом AJAX/API-запросов (×2–3): ~60–140 RPS в пике.

load_calc.py
# Калькулятор серверной нагрузки
dau = 50_000           # уникальных посетителей в день
pages_per_session = 5  # страниц за сессию
api_factor = 2.5       # AJAX/API запросов на каждую страницу
peak_factor = 4        # пиковый множитель
response_time = 0.15   # среднее время ответа (сек)

rps_avg = dau * pages_per_session / 86400
rps_peak = rps_avg * peak_factor * api_factor
concurrent = rps_peak * response_time

print(f"RPS средний: {rps_avg:.1f}")
print(f"RPS пиковый: {rps_peak:.1f}")
print(f"Concurrent connections: {concurrent:.0f}")
print(f"Рекомендация CPU: {max(2, int(concurrent / 3))} vCPU")
print(f"Рекомендация RAM: {max(4, int(concurrent * 0.3))} ГБ")

Шаг 2: Нагрузочное тестирование

Формулы — это оценка. Реальные цифры даёт только нагрузочный тест. Разверните копию проекта на staging-сервере и прогоните wrk или k6:

load-test.sh
# wrk — быстрый HTTP-бенчмарк
wrk -t4 -c100 -d30s http://staging.example.com/

# k6 — более гибкий инструмент для сценариев
k6 run --vus 50 --duration 60s script.js

# Результат покажет:
# - Requests/sec (RPS)
# - Latency p50, p95, p99
# - Errors (5xx, timeouts)
Рекомендованные конфигурации по теме статьи

Проверенные серверы от надежных провайдеров

Весь каталог
Timeweb Cloud
Перейти
Хит цены
Timeweb Cloud

Timeweb Cloud

Москва★ 4.8

Cloud Start

CPU

1 ядер • 3.3 ГГц

RAM

1 ГБ

Диск

15 ГБ NVMe

Канал

200 Мбит/с

299 ₽/мес

Timeweb Cloud

Timeweb Cloud

Москва★ 4.8

Cloud Basic

CPU

2 ядер • 3.3 ГГц

RAM

2 ГБ

Диск

40 ГБ NVMe

Канал

200 Мбит/с

499 ₽/мес

152-ФЗ
Selectel

Selectel

Москва★ 4.9

Cloud Lite 1

CPU

1 ядер • 2.6 ГГц

RAM

1 ГБ

Диск

10 ГБ SSD

Канал

200 Мбит/с

550 ₽/мес

Часто задаваемые вопросы (FAQ)

Как узнать текущую нагрузку на сервер?

htop — CPU и RAM в реальном времени. iostat -x 1 — дисковая нагрузка. ss -s — количество TCP-соединений. Для мониторинга 24/7 — ставьте Prometheus + Grafana.

Мой сайт на WordPress — сколько RPS он выдержит?

WordPress без кэширования на 2 vCPU / 4 ГБ RAM — ~20–30 RPS. С WP Super Cache / Redis — ~200–400 RPS. С Nginx FastCGI Cache — ~2000+ RPS (отдаёт статику из памяти).