Ёмкость тарифа считается одной строкой: число одновременных процессов PHP делить на время генерации страницы. У REG.RU на обычных тарифах этих процессов четыре. При 0,4 секунды на страницу тариф держит десять запросов в секунду, при одной секунде — четыре, и ни запросом больше. Посещаемости в этой формуле нет вообще.
Поэтому сайт отдаёт 508 при незагруженных процессоре и памяти. Он упирается не в железо, а в одновременность.
Семь лет назад — тред на Хабр Q&A датируется примерно 2019 годом — пользователь под ником @desolate сделал то, чего не делает почти никто: поставил контролируемый эксперимент. Одна копия сайта на WordPress, два хостера, один тест на сто уникальных посетителей за пять минут. Тариф Fornex за 159 ₽ в месяц отдал 503: процессы 30 из 30, доступность 51,32 %, лимит процессов пробит 2 341 раз за сутки. Тариф Beget за 115 ₽ прошёл тест: доступность 100 %, ответ 0,51 секунды. Дорогой лёг. Дешёвый выстоял. Цены с тех пор не значат ничего, механика — значит всё.
В том треде @desolate задал вопрос, на который никто не ответил: как сравнить «4 ядра и 2048 МБ» у одного с «65 CP и 128 МБ на процесс» у другого. Ответ занимает одну строку, и к концу текста вы посчитаете свой тариф до оплаты. Начать придётся с того, что продавец называет мощностью, а инженер — конкурентностью.
Ёмкость считается в процессах, а не в посетителях
Формула у всех одна: потолок в запросах в секунду равен числу рабочих процессов, делённому на время генерации. Это закон Литтла, выведенный в 1961 году для очередей. На растущей очереди — в пиковые полчаса распродажи — он не работает, для расчёта тарифа годится.
Из формулы следует то, что ломает интуицию покупателя: потолок обратно пропорционален времени генерации. Вдвое медленнее страница — вдвое меньше ёмкость. Не на 10 %, не «чуть хуже» — вдвое.
Одновременных процессов PHP: REG.RU — 4 на обычных тарифах и 32 на VIP; Beget — 30 на домен; Timeweb — 40 на пользователя; SpaceWeb — 64 на аккаунт. Четвёрка REG.RU не напечатана на тарифной странице — она в свёрнутом аккордеоне витрины и в базе знаний. Строчка «Неограниченный трафик» в той же таблице её не отменяет.
Посчитаем в обратную сторону. Блог на WordPress с 30 000 визитов в месяц при глубине просмотра 1,5 даёт 58 500 генераций — 0,023 запроса в секунду. Даже с десятикратным пиком и откликом в полсекунды это 0,11 занятого процесса: блогу хватает одного воркера PHP.
Здесь напрашивается возражение: «у меня триста человек в сутки, и всё летает». Летает. Посещаемость решает, когда вы упрётесь в потолок, а не где этот потолок стоит. Высоту задают два числа — сколько процессов даёт тариф и за сколько генерируется страница. Трафик только подводит к ней.
Отсюда перестаёт быть парадоксом магазин на WooCommerce, который вынес тариф, заявленный на 300 000 визитов в месяц, имея 1 200. Тысяча двести пришли одновременно. Триста тысяч размазаны по тридцати дням.
Тем же различием разводится спор двух заинтересованных сторон. «Сайт от 1 000 посетителей в сутки — берите хотя бы четыре процессора», — говорит партнёр хостинга с реферальной ссылкой под роликом. «Хорошо закэшированный сайт на базовом тарифе держит десятки тысяч в сутки», — отвечает сам хостинг. Первый меряет пик некешируемых генераций, второй — размазанный кешируемый трафик. Спорят они не о хостинге, а о разных сайтах.
Вопрос в том, как владелец узнаёт, что упёрся.
Ошибки не будет
Никак — в двух случаях из трёх.
Во что упёрся сайт и что при этом видит посетитель
| Упор в лимит | Что получает посетитель |
|---|---|
| Одновременные подключения | 508 Resource Limit Is Reached |
| Память или число процессов | 500 или 503 |
| Процессор или диск | Ошибки нет — сайт просто отвечает медленнее |
Упор в процессор и в дисковый ввод-вывод не даёт ни кода ошибки, ни письма от провайдера. Сайт просто становится вязким. Владелец полгода валит это на «плохой хостинг» или тяжёлую CMS, меняет тему, чистит плагины, переезжает — и покупает ровно то же самое под другой вывеской.
Диагноз ставится по форме графика в панели, а не по факту ошибки. Линия одновременных процессов упирается в верхнюю границу и идёт по ней ровной полкой, а процессор и память свободно гуляют внизу. Полка сверху, простор снизу — вы уперлись в конкурентность, а не в мощность.
Полка — это и есть момент, когда тариф закончился. Осталось понять, сколько тарифа вы купили.
Одна единица: CP — это процессорная минута в сутки
Провайдеры печатают «CP», «cp», «CPU», «производительность» — и покупатель решает, что сравнить это невозможно. Сравнить можно. Один CP — это одна минута процессорного времени в сутки, а в сутках их 1 440.
Это доказывается тремя независимыми путями. У SpaceWeb на карточке стоит «120 CP», а в справке для того же тарифа — «120 минут процессорного времени в сутки». SprintHost печатает формулу прямым текстом: максимум равен квоте CPU, умноженной на 1 440 минут в сутках. У REG.RU девять пар «процент ядра ↔ CP» сходятся на 1 440, а соседняя строка про MySQL нормирована в секундах и даёт 86 400.
Оговорка, без которой шкала врёт: минута не равна минуте. REG.RU указывал 2 200 МГц на младших тарифах и 3 700 МГц на VIP. Шкала CP сравнивает время, а не работу, и занижает разницу между дешёвым и дорогим. Сравнение честное, но с поправкой на железо.
Теперь то, ради чего всё считалось.
Одинаковая квота процессорного времени стоит по-разному. Цена — за месяц при оплате за год; у Джино скидок за срок нет. Срез 14 сентября 2026
| Тариф | Квота | % одного ядра | ₽ в месяц |
|---|---|---|---|
| Джино X1 | 30 CP | 2,1 % | 405 ₽ за рабочий комплект |
| Beget Blog | 80 CP | 5,6 % | 420 ₽ |
| Timeweb Year | 100 CP | 6,9 % | 244 ₽ |
| Beget Start | 100 CP | 6,9 % | 590 ₽ |
| SpaceWeb «Старт» | 120 CP | 8,3 % | 119 ₽ |
| SpaceWeb «Космос» | 120 CP | 8,3 % | 659 ₽ |
| Timeweb Millennium | 650 CP | 45,1 % | 806 ₽ |
Timeweb Year и Beget Start выдают одну и ту же квоту — 100 минут процессорного времени в сутки — при 244 и 590 ₽ в месяц. Разница в цене 2,4 раза за идентичный ресурс.
У SpaceWeb ещё прямее: четыре тарифа подряд — «Старт», «Взлёт», «Ракета», «Космос» — с одним лимитом 120 CP. Помесячно они стоят от 149 до 755 ₽ — рост в 5,07 раза при неизменном процессоре. Деньги внутри линейки покупают диск и число сайтов. Производительность — не покупают вовсе. Первая ступень, где квота растёт, — «Уран» за 1 499 ₽ в месяц.
Массовый российский тариф — это от 2,5 до 7 % одного ядра в среднем за сутки. Тринадцать процентов — уже старший из обычных тарифов REG.RU, а не норма.
И здесь у шкалы второе дно. SpaceWeb объясняет учёт дословно: «если процесс выполнился за 0.5 секунды, но 0.3 секунды из этого времени он ожидал получения данных с диска/данных из базы данных, то нагрузка, созданная им — 0.2 секунды». Страница, которая две секунды ждёт базу, почти не расходует CP — она тратит не процессор, а терпение. Зато всё это время держит занятым процесс.
Два лимита наказывают за противоположное. Медленная страница жжёт конкурентность, не трогая процессорную квоту, — вот почему сайт ложится при свободном процессоре. Чтобы посчитать это заранее, нужны три числа, которых на витрине нет.
Три числа, которых нет на витрине
Первое — память на один процесс. SpaceWeb даёт 128 МБ, Timeweb и REG.RU — по 1 ГБ, Beget — 6 ГБ. Разброс в 48 раз внутри одного класса услуг. Следствие в один клик: 1С-Битрикс требует memory_limit 256M и в объявленные 128 МБ SpaceWeb не влезает — нужен «Уран», в десять раз дороже «Старта».
Второе — порог, на котором процесс убивают. SpaceWeb убивает его при 10 % процессора в течение 30 секунд, Timeweb — при 90 % в течение десяти минут. Один и тот же импорт прайса у одного умрёт через полминуты, у другого отработает десять. Это не «кто лучше». Это два разных продукта под одним словом.
Третье — inode, число объектов файловой системы. Мы скачали официальные дистрибутивы и посчитали их сами, 14 сентября 2026 года, одной командой:
find wordpress -type f | wc -l # файлы
find wordpress -type d | wc -l # каталоги
find wordpress | wc -l # всего inode
Ядро WordPress 7.1 — 4 250 объектов. WooCommerce — 6 834: один плагин в полтора раза тяжелее всего ядра. Связка с WooCommerce, Elementor и Yoast — 17 668 объектов до первой картинки. Битрикс «Старт» — 47 464, «Бизнес» — 88 870, в 20,9 раза больше ядра WordPress. Считали мы распакованные дистрибутивы — файлы плюс каталоги. Установленный сайт добавит конфигурацию, кеш и контент: это нижняя граница.
Теперь к лимитам. Число публикуют двое из десяти прочитанных провайдеров: Beget — 5 000 000 объектов, REG.RU на обычных тарифах — 150 000. Разница в 33 раза. Timeweb вместо числа пишет «Безлимит», остальные семь молчат. Распакованный «Бизнес» съедает 59 % потолка REG.RU одним дистрибутивом, ещё до кеша, который Битрикс из коробки пишет файлами.
Лимит inode выбирает за вас CMS ещё до первой строчки контента. А расход процессорной квоты за вас выбирает тот, кого вы вообще не считали.
Нагрузку создают боты, а гасит её кеш
Ни один крупный AI-краулер не исполняет JavaScript: на выборке в 500 миллионов обращений GPTBot не нашлось ни одного случая. Счётчик Яндекс.Метрики работает на JavaScript. Бота в Метрике нет.
Дальше арифметика, объясняющая, почему это дорого. Человек открывает страницу — один запрос к PHP и около 76 к статике: картинки, шрифты, стили, скрипты, которые nginx отдаёт за микросекунды. Краулер берёт один запрос к PHP и ноль к статике: дорогой забирает, 76 дешёвых не трогает. По расходу квоты визит бота равен визиту человека — а в счётчике его не существует.
Считать нагрузку по Метрике — значит систематически недосчитать. Смотреть надо логи.
Шоун Пауэрс потратил день на сервер, который вис без причины: чинил базу, вынес её на localhost, перебрал конфигурацию. База была ни при чём. Рабочие процессы PHP мгновенно разбирали Googlebot и FeedBurner, новым запросам места не оставалось. Поддержка SprintHost, отвечая клиенту на превышение лимитов, назвала шесть причин. Известны четыре: плагины WordPress, чересчур активная индексация роботами, запросы к несуществующим страницам и тяжёлые запросы к базе. «Много посетителей» среди них нет.
Против всего этого работает одна вещь, и она бесплатна. На стенде с открытой методикой — WordPress с WooCommerce, восемь воркеров, конкурентность 32 — страница магазина без кеша выдавала 154 запроса в секунду и занимала все восемь ядер. С кешем на стороне Cloudflare — 1 013, и процессор «почти не использовался».
Кеш множит ёмкость. Апгрейд внутри линейки 120 CP не даёт ничего.
Тут вмешивается голос, которому положено продавать апгрейд. На жалобу клиента про постоянные 508 провайдер отвечает: «Вам, скорее всего, просто нужно поставить плагин кеширования». Хостер, зарабатывающий на переходе вверх по линейке, советует бесплатное. На том же стенде объектный кеш дал прибавку: Memcached +5,9 %, Redis +7,8 %, встроенный SQLite — +12,3 %. Бесплатный обошёл оба платных.
Кешируется не всё, и это решает выбор тарифа. Корзина, оформление заказа, личный кабинет, поиск, админка, /wp-json/ и admin-ajax.php идут в PHP каждый раз. Блог с кешем и магазин с корзиной на одной посещаемости — разные тарифы. Осталось понять, сколько попросят на второй год.
Цена продления — это прайс на день списания
Ни один из десяти прочитанных провайдеров не публикует цену продления отдельной величиной. И искать её бесполезно: переключатель на витрине — скидка за длину предоплаты, и при продлении она не сгорает. Слова «продление» нет ни на одной тарифной странице Beget — ни одного вхождения.
Повторяется процент, а не рубль. Цена продления равна прайсу на день списания, а прайс меняется в одностороннем порядке: у Timeweb это записано в пункте 4.5 оферты — тарифы могут быть изменены с уведомлением за семь дней.
На четырёхлетнем окне это видно по архивам Timeweb. Регулярная помесячная цена Millennium выросла с 594 до 1 285 ₽ — плюс 116 %. Витринная за то же время снизилась с 594 до 554 ₽. Обе цифры настоящие, и разницу оплачивает тот, кто вносит деньги на три года вперёд. Зачёркнутое число на витрине — помесячный тариф, а не «цена продления»: переключатель предвыбран на максимальный срок.
Разрыв «реклама → работающий сайт» по восьми провайдерам: Джино ×3,14, SprintHost ×2,63, NetAngels ×2,51, Timeweb ×2,18, Majordomo ×2,01. Медиана чуть больше двух. Правило простое: умножай витринную цену на два, если не вносишь всю сумму сразу.
У Джино за кратностью стоит вот что: «от 129 ₽» — аккаунт без PHP, без базы и без диска, а рабочий комплект собирается из пяти строк и стоит 405 ₽.
А IHC печатает дату собственного подорожания прямо на карточке: «147 ₽ / месяц — с 1 октября цена 210 ₽». По линейке рост от 40,4 до 42,9 %. Все цены здесь — срез 14 сентября 2026 года, и у одной строки срок годности известен точно: семнадцать дней.
Что с этим делать
Формула, ради которой всё считалось, состоит из двух строк:
Потолок тарифа, запросов/с = число одновременных процессов / время генерации
Расход в сутки, минут CPU = генераций в сутки × CPU-время генерации / 60
Сайт на WordPress с 3 000 некешированными генерациями в сутки при 0,4 секунды процессорного времени на страницу: 3 000 × 0,4 / 60 = 20 минут CPU в сутки. Это влезает даже в Джино X1 с его 30 CP. Тот же сайт при 30 000 генераций — вырос вдесятеро или пришли боты — требует 200 минут, а это уже уровень SpaceWeb «Уран» или Beget Bitrix-1.
Проверить всё это можно за вечер:
- Откройте
phpinfo()и посмотрите два числа —memory_limitиmax_execution_time. Они скажут о тарифе больше, чем строчка «4 ядра»: именно они решили исход того теста на Хабре. - Посчитайте inode до оплаты:
find /путь -type f | wc -lиdf -i. Сравните с лимитом тарифа, если провайдер его публикует. - Измерьте вес своего воркера сами:
ps -eo pid,rss,command | grep php-fpmпосле нескольких часов реального трафика. Чужим оценкам верить нечего — они расходятся от 15 до 180 МБ, а протокол замера не публикует никто. - Читайте логи, а не счётчик. Добавьте
$upstream_response_timeв формат лога, 95-й перцентиль достаётся одной строкой:awk '{print $NF}' access.log | sort -n | awk '{a[NR]=$1} END{print a[int(NR*0.95)]}'.
И прогоните свой тест на копии сайта — ровно как @desolate: одна копия, один тест, два тарифа. С одной оговоркой: нагрузочное тестирование часто запрещено правилами виртуального хостинга, а в тестовом периоде Timeweb нет cron и закрыты исходящие порты, так что померить реальную нагрузку на пробном доступе нельзя по построению.
Тот вопрос с Хабра — как сравнить «4 ядра и 2048 МБ» с «65 CP и 128 МБ на процесс» — решается теперь в одну строку: CP это процессорная минута, в сутках их 1 440, дальше делите. Но историю @desolate решило вообще не это. Дорогой тариф лёг из-за memory_limit 128M и тридцати секунд на скрипт — двух чисел, которых ни на одной витрине не печатают.
Хостинг продают в гигабайтах и сайтах. Ложится он в процессах.