Коротка відповідь

  • Місце = файли сайту + база даних + пошта + логи, і зверху ще половина на запас. Звичайному сайту на WordPress вистачає 2-5 GB, тому 10 GB у Старті - це не обмеження, а запас.
  • RAM = пам'ять одного процесу PHP (40-150 МБ) × кількість сторінок, які генеруються одночасно, плюс пам'ять бази. Для сайту без черги відвідувачів це кілька сотень мегабайт, 2 GB вистачає з головою.
  • CPU рахують не за відвідувачами за добу, а за піком: скільки некешованих сторінок за секунду сайт має віддати в найгіршу хвилину. Одне ядро витягує 2-5 таких сторінок за секунду.
  • Порядок вибору: спочатку CPU, потім RAM, місце - останнім. Більшість сайтів, які я переносив, упиралися в процесор, і жоден - у гігабайти.

1. Чому «скільки відвідувачів» - неправильне питання

Мені часто пишуть: «У мене 500 відвідувачів на день, який тариф?». Ця цифра мало що каже. 500 людей, рівномірно розмазаних по добі, - це одна сторінка на кілька хвилин, таке навантаження не помітить навіть найменший план. Ті самі 500 людей, які прийшли за 15 хвилин після розсилки на відкриту сторінку акції, - це вже інша історія.

Друга змінна - що саме робить відвідувач. Стаття з кешу коштує серверу мілісекунди, а пошук з фільтрами, кошик чи кабінет щоразу запускають PHP і десятки запитів до бази. Тому для розрахунку потрібні три числа, а не одне: скільки займають дані, скільки пам'яті їсть одна некешована сторінка і скільки таких сторінок припадає на пікову хвилину.

2. Місце на диску: з чого воно складається

Диск рахують найпростіше, і саме з ним найменше проблем. Складові:

  • Файли движка і плагінів. Чистий WordPress займає близько 70 МБ, з десятком плагінів і темою - 150-300 МБ. OpenCart з модулями - схожий порядок.
  • Медіа. Головна змінна. Фото з телефону вагою 4-6 МБ, завантажене без стиснення, WordPress ще й розріже на 5-8 мініатюр. Блог на 200 статей з нормально стиснутими картинками - це 1-2 GB, без стиснення легко 6-8 GB.
  • База даних. У контентних сайтів - десятки мегабайтів. Роздувається вона не від статей, а від журналів плагінів, ревізій записів і сесій магазину.
  • Пошта. У DirectAdmin скриньки на домені лежать у тому самому обсязі диска, що й сайт. Скринька бухгалтерії з вкладеннями за три роки може важити більше за весь сайт.
  • Логи і локальні копії. Плагіни резервного копіювання, які складають архіви прямо в теку сайту, - найчастіша причина, чому 10 GB раптом закінчилися.

Формула: (файли + медіа + база + пошта) × 1,5. Множник потрібен, бо під час оновлення движка, імпорту товарів чи ручного архіву перед правками на диску тимчасово лежить друга копія. Сайт на 3 GB з поштою на 2 GB - це 7,5 GB, тобто Старт із 10 GB NVMe підходить, але вже без великого запасу. Щоденні бекапи Hosturm зберігаються на окремому сервері і місця в тарифі не займають, тож плагін бекапу, який пише архіви поруч із сайтом, можна прибрати.

3. Оперативна пам'ять: рахуємо через процеси PHP

Кожен запит, який не віддано з кешу, запускає окремий процес PHP. Скільки пам'яті він бере, залежить від движка і плагінів, орієнтири з практики:

  • простий сайт на WordPress - 40-70 МБ на процес;
  • WordPress з конструктором сторінок і 30+ плагінами - 90-150 МБ;
  • WooCommerce, OpenCart чи PrestaShop на сторінці каталогу з фільтрами - 80-200 МБ.

Далі множимо на кількість сторінок, які генеруються одночасно. Якщо сторінка збирається за 0,5 секунди, а в пікову хвилину приходить 4 некешовані запити за секунду, одночасно живуть 2 процеси. Для магазину по 150 МБ - це 300 МБ. До цього додайте MySQL: для бази на кілька сотень мегабайтів це ще 200-500 МБ.

Висновок: сайту без постійної черги відвідувачів 2 GB RAM вистачає з великим запасом. Пам'ять закінчується в двох випадках - коли повільні сторінки накопичуються (кожна висить 5-10 секунд, процеси не встигають звільнитися) або коли плагін тягне в пам'ять цілу таблицю. Обидва випадки лікуються пошуком того, що гальмує, а не більшим тарифом. Детально - у статті NVMe, PHP 8.3 і кеш: що реально прискорює сайт.

4. CPU: скільки сторінок за секунду витягує одне ядро

Ядро процесора - це грубо «одна сторінка в роботі в кожен момент часу». Якщо некешована сторінка генерується 0,3 секунди, одне ядро видає близько трьох таких сторінок за секунду. Якщо 1 секунду - одну.

Порахуйте свій пік. Приклад для блогу: 1500 відвідувачів на добу, у середньому 2,5 сторінки на людину, і до 15% добового трафіку приходить у найзавантаженішу годину. Виходить 1500 × 2,5 × 0,15 = 560 сторінок за годину, або 0,16 сторінки за секунду. Навіть без кешу це 5% одного ядра.

Тепер магазин: 800 відвідувачів на добу, але кожен робить 10-12 переходів по фільтрах і пошуку, а о 20:00 запускається розсилка, і 300 людей приходять за 10 хвилин. 300 × 11 / 600 секунд = 5,5 некешованої сторінки за секунду. При 0,4 секунди на сторінку це 2,2 ядра, тобто Старт з одним ядром тут почне захлинатися, а 3 ядра Бізнесу витримають з запасом.

Звідси правило: для сайтів, які майже повністю кешуються (блог, візитка, лендінг), процесор майже ніколи не вузьке місце. Для всього, де відвідувач щось фільтрує, шукає або кладе в кошик, ядра - перше, на що дивитись.

5. Боти теж з'їдають ресурси, і їх не видно в аналітиці

У Google Analytics ви бачите людей. У журналі сервера - всіх. На сайтах, які я обслуговую, частка ботів у запитах регулярно сягає 40-60%: пошукові роботи, SEO-сервіси, парсери цін, сканери вразливостей. Вони обходять пошук, фільтри і пагінацію - саме те, що найдорожче для процесора.

Тому пік, порахований за аналітикою, треба множити щонайменше на 1,5. Або відрізати зайвих ботів: закрити від індексації сторінки з параметрами фільтрів у robots.txt і ввімкнути захист від ботів у Cloudflare. Що робити, коли боти вже поклали сайт, - у статті «Перевищено ліміт ресурсів»: що це означає і що робити.

6. Як виміряти свій сайт, а не гадати

Якщо сайт уже десь працює, усі три числа можна зняти за пів години.

Місце

У панелі поточного хостингу подивіться загальне використання диска і окремо розмір бази (у phpMyAdmin внизу списку таблиць є підсумок). Не забудьте поштові скриньки: у більшості панелей їхній обсяг показаний окремо від сайту.

Час генерації сторінки

Виміряйте, скільки сервер думає до першого байта, на сторінці, яку кеш не віддає, наприклад на пошуку:

curl -o /dev/null -s -w "%{time_starttransfer}\n" "https://example.com/?s=test"

Запустіть 5-6 разів і візьміть середнє. 0,2-0,5 секунди - нормально, більше секунди - спершу шукайте причину, а вже потім рахуйте ядра.

Пам'ять процесу

У WordPress плагін Query Monitor показує пікову пам'ять кожної сторінки внизу панелі адміністратора. Перевірте три найважчі сторінки: головну, каталог або пошук і оформлення замовлення.

Піковий трафік

Відкрийте журнал доступу за останній місяць і порахуйте запити по годинах. Найзавантаженіша година, поділена на 3600, - це ваше число «запитів за секунду», вже разом з ботами. Не вмієте читати журнали - надішліть адресу сайту в Telegram підтримки, я подивлюся і скажу, який план потрібен саме вам.

7. Що виходить у цифрах: від вимірів до плану

Зведу розрахунок у таблицю. Ціни - за річної оплати, як у порівнянні планів на головній.

Що показали виміриЯдра / RAM / дискПланЦіна
Дані до 6 GB з поштою, пік до 1 некешованої сторінки за секунду1 / 2 GB / 10 GBСтарт142 грн/міс
2-3 сайти або дані до 13 GB, пік до 2-3 сторінок за секунду2 / 3 GB / 20 GBОптимал229 грн/міс
Магазин з фільтрами, розсилки, пік 3-6 сторінок за секунду3 / 4 GB / 30 GBБізнес350 грн/міс
Кілька магазинів, дані понад 20 GB, процеси по 150+ МБ4 / 8 GB / 100 GBPro800 грн/міс
Постійне навантаження без спадів, важка база6 / 12 GB / 200 GBПреміум, виділений VPS1290 грн/міс
Портал чи агенція з десятками проєктів8 / 16 GB / 400 GBМаксимум, виділений VPS1990 грн/міс

Якщо платити щомісяця, виходить дорожче: Старт - 479 грн/міс, Бізнес - 759 грн/міс, Pro - 1119 грн/міс. Межа за диском у таблиці порахована з множником 1,5 з розділу про місце. Якщо ваші цифри лягають на межу двох рядків, беріть нижчий план за місцем і вищий - за процесором: місце легко звільнити, а ядро «звільнити» не вийде. Чим шаред-план відрізняється від виділеного VPS за суттю, а не лише за цифрами, - у статті Шаред-хостинг, VPS чи виділений сервер.

8. Що рахувати не треба

Трафік. На всіх планах він не тарифікується, тож «скільки гігабайтів на місяць» питання не стоїть. Інше обмеження - швидкість підключення. У Старту канал 100 Mbit/s, у Оптималу - 200, у Бізнесу - 500, від Pro і вище - 1 Gbit/s. 100 Mbit/s - це близько 12 МБ на секунду, і для сайту, де картинки й скрипти роздає Cloudflare, цього вистачає. Тісно стає лише тоді, коли з хостингу качають великі файли: прайси по 50 МБ чи відео.

Бази, скриньки, тип диска. 5 баз і 15 скриньок Старту на одному сайті не вичерпати, а NVMe стоїть на всіх планах - різниця лише в обсязі.

9. Чесно про межі шаред-планів

Ядра й RAM у таблиці - це ресурси, виділені плану, а не окремий сервер: Старт, Оптимал, Бізнес і Pro працюють як акаунти на спільному VPS у дата-центрі у Франції, з ізоляцією кожного акаунта. Для більшості сайтів це непомітно. Але сайту, який годинами тримає процесор на 100% (імпорт товарів щогодини, важкі звіти), потрібен окремий сервер - Преміум або Максимум. Підключення такого VPS займає до 24 годин, це не миттєво.

І ще одне: у звичайному зведенні DirectAdmin видно диск і трафік, а детального графіка CPU по вашому акаунту там немає. Не зрозуміло, чи впирається сайт у процесор, - напишіть у підтримку, я подивлюся навантаження з боку сервера.

Чек-лист перед оплатою

  1. Порахуйте місце: файли + база + пошта, помножте на 1,5.
  2. Виміряйте час генерації некешованої сторінки через curl, 5-6 запусків.
  3. Знайдіть у журналі найзавантаженішу годину за місяць і поділіть на 3600.
  4. Помножте пік на 1,5, якщо не відсікаєте ботів.
  5. Пік × час сторінки = потрібна кількість ядер. Округлюйте вгору.
  6. Перевірте пам'ять трьох найважчих сторінок і помножте на кількість одночасних процесів.
  7. Спірний випадок - нижчий план за диском, вищий за процесором.
  8. Переносите сайт - це безкоштовно, порядок без простою - у статті Як перенести сайт на інший хостинг без простою.

Підсумок

Ресурси сайту рахуються трьома числами: місце з запасом у півтора раза, пам'ять одного процесу PHP і пікова кількість некешованих сторінок за секунду. Для блогу, візитки чи лендінгу це майже завжди 1 ядро і 2 GB RAM, тобто Старт за 142 грн/міс. Для магазину з фільтрами та розсилками - від 3 ядер, тобто Бізнес за 350 грн/міс. Гігабайти диска в цьому рішенні - останнє, на що варто дивитись.

Усі ліміти планів поруч - на сторінці хостингу і в порівнянні тарифів на головній. Якщо виміри вийшли на межі двох планів, надішліть їх у Telegram - підкажу, з якого почати, щоб не переплачувати за ядра, які простоюватимуть.