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

Під магазин, який уже продає, я раджу план Бізнес: 3 ядра CPU, 4 ГБ RAM, 30 ГБ NVMe, 20 баз MySQL, канал 500 Mbit/s, WAF ModSecurity і антивірус, пріоритетна підтримка. Коштує 759 грн/міс помісячно або 350 грн/міс при оплаті за рік (4200 грн).

Старт за 142 грн/міс (при річній оплаті) - нормальний вибір для нового магазину з каталогом до кількох сотень позицій і без реклами. Pro з 4 ядрами і 8 ГБ RAM - коли магазинів кілька або каталог на тисячі товарів з вивантаженнями з 1С чи прайсів.

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

1. Чому магазин навантажує сервер інакше, ніж сайт-візитка

Блог чи лендінг після кешування віддається як готовий HTML-файл, і сервер майже не витрачає на нього процесор. У магазину так не вийде: частина сторінок персональна для кожного відвідувача.

  • Кошик і оформлення замовлення - кешувати не можна за визначенням, там сесія конкретного покупця.
  • Фільтри в категоріях - кожна комбінація «розмір + колір + ціна від-до» є окремим запитом до бази. Варіантів тисячі, кеш їх не покриває.
  • Пошук по товарах - запит щоразу новий, і на OpenCart без окремого модуля пошуку це повний перебір таблиці товарів.

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

2. Скільки ядер потрібно: рахуємо від покупців, а не від товарів

Орієнтовна механіка така: некешована сторінка категорії з фільтром на OpenCart чи WooCommerce займає 0,2-0,5 секунди процесорного часу. Одне ядро, відповідно, обробляє 2-5 таких запитів на секунду. Покупець у активній фазі робить запит раз на кілька секунд.

У перекладі на живі цифри:

  • 1 ядро тримає 10-15 одночасних активних покупців. Для магазину без реклами, з кількома десятками замовлень на тиждень, цього досить.
  • 3 ядра - 40-60 одночасних покупців. Це рівень магазину з рекламою в Google Shopping чи Instagram і піком у вечірні години.
  • 4 ядра і 8 ГБ RAM потрібні там, де крім покупців працюють фонові задачі: імпорт прайсу на кілька тисяч позицій, фід для маркетплейсів, синхронізація з обліковою системою.

Пам'ять, поки магазин один, важлива менше: 2-4 ГБ вистачає PHP і MySQL. Вузьким місцем вона стає при кількох магазинах на акаунті або важкому імпорті.

Якщо ви вже отримували лист про перевищення ліміту в звичайний тиждень, сезон цей тариф не переживе. Як розібратись, що саме закінчилось, - у статті «Перевищено ліміт ресурсів»: що це означає і що робити.

3. Три плани під магазин поруч

Цифри з чинних тарифів хостингу. Перша ціна - при оплаті щомісяця, друга - у перерахунку на місяць при оплаті за рік:

ПараметрСтартБізнесPro
Щомісяця479 грн759 грн1119 грн
При оплаті за рік142 грн/міс350 грн/міс800 грн/міс
CPU1 ядро3 ядра4 ядра
RAM2 ГБ4 ГБ8 ГБ
NVMe10 ГБ30 ГБ100 ГБ
Канал100 Mbit/s500 Mbit/s1 Gbit/s
Сайтів1510
Баз MySQL520без обмежень
Поштових скриньок1550без обмежень
Підтримкастандартнапріоритетнаперсональний менеджер
Під щоновий магазин, сотні товарівробочий магазин з рекламоюкілька магазинів або тисячі позицій

Між Стартом і Бізнесом є ще Оптимал (2 ядра, 3 ГБ RAM, 20 ГБ, 229 грн/міс при річній оплаті) - він добре підходить для блогу чи кількох невеликих сайтів, але для магазину в сезон я б не економив на одному ядрі. Усі шість планів з VPS-рівнями видно в порівнянні на головній.

4. Диск: місце з'їдають фото і сміття, а не товари

Сам OpenCart займає близько 50 МБ, база на кілька тисяч товарів - 50-300 МБ. Основну вагу дають зображення. Магазин на 2000 товарів по 4 фото, і до кожного фото движок генерує 4-6 мініатюр різних розмірів, - це 3-6 ГБ тільки на картинки, якщо фото завантажені без стиснення.

Тому 10 ГБ Старту для великого каталогу - впритул, а 30 ГБ Бізнесу вистачає з запасом на тестову копію магазину. Решту місця зазвичай з'їдають кеш мініатюр після зміни шаблону, архіви в корені сайту і логи помилок від збійного модуля.

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

5. PHP і версія движка: перевірити до оновлень, а не після

На серверах Apache 2.4, PHP 8.3 з OPcache, версію перемикаєте самі в DirectAdmin. Для магазину це критично, бо модулі оплати й доставки часто відстають від движка:

  • OpenCart 4 потребує PHP 8.0 і новіше;
  • гілка OpenCart 3 живе на PHP 7.3-8.0, і більшість старих модулів на 8.3 видадуть помилки;
  • WooCommerce працює на 8.3, але окремі плагіни доставки варто перевірити на копії.

Моє правило: жодних оновлень движка, модулів і PHP з середини листопада до кінця грудня. Усе, що хочеться оновити, - у жовтні, на тестовій копії магазину, і лише потім на робочому сайті. 20 баз на Бізнесі якраз дозволяють тримати таку копію поруч. Докладніше про вимоги під OpenCart і PrestaShop - на окремій сторінці для магазинів.

6. Бекапи: що буде з замовленнями між копіями

Копії всіх акаунтів робляться двічі на добу, о 00:00 і о 12:00, і зберігаються на окремому сервері. Для магазину з цього випливає неочевидна річ: відкат до останньої копії повертає файли і базу, але стирає замовлення, що прийшли після неї. Якщо модуль зламав магазин о 18:00, відновлення з полуденної копії забере шість годин замовлень.

Тому в сезон:

  • перед будь-якою зміною робіть ручну копію бази в DirectAdmin - це хвилина;
  • якщо щось зламалось, спершу вивантажте свіжі замовлення (експорт у CSV або хоча б скріншоти списку), а вже потім відновлюйтесь;
  • замовлення дублюйте в Telegram або CRM, щоб вони жили не тільки в базі магазину.

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

7. SSL і пошта: дві речі, які тихо вбивають продажі

Без HTTPS не підключаються платіжні системи, а браузер показує попередження саме на сторінці кошика, де покупець вводить телефон. Let's Encrypt входить у всі плани і поновлюється автоматично, але після переїзду чи зміни домену варто відкрити кошик і оформлення в браузері й переконатися, що замок на місці.

Лист «Ваше замовлення прийняте» - друга тиха точка відмови. Листи з домену на хостингу підписуються DKIM, але якщо магазин відправляє пошту через функцію mail() з адресою відправника на @gmail.com, поштові сервіси відправлять її в спам. Налаштуйте відправку через SMTP зі скриньки на своєму домені і перевірте SPF-запис. Якщо листи не доходять і причина не очевидна, напишіть у підтримку в Telegram з номером замовлення і часом: у поштових логах сервера видно, де саме лист зупинився.

8. Репетиція сезону за два тижні до старту

Найкорисніше, що можна зробити в жовтні, - прогнати магазин так, як його прожене грудень:

  • Пройдіть покупку від і до з телефону на мобільному інтернеті: пошук, фільтр, кошик, оплата, лист. Засічіть час кожного кроку.
  • Перевірте швидкість кошика і фільтрів, а не головної. Якщо сторінка з фільтром думає довше 2 секунд у звичайний день, під навантаженням буде 5-10. Що з цим робити по кроках - у статті «Чому сайт повільний: перевірити за 20 хвилин».
  • Увімкніть кешування для каталогу і карток товарів, де движок дозволяє, і вимкніть модулі, якими ніхто не користується.
  • Стисніть банери розпродажу у WebP - вони вантажаться на кожній сторінці.
  • Перенесіть імпорт прайсу і фіди на нічні години, щоб вони не забирали ядра в піковий вечір.

Якщо після цього магазин однаково впирається в процесор, переходьте на старший план зараз, а не в день розпродажу. Перехід на старший план не вимагає перенесення: файли, база і пошта лишаються де були, ростуть лише ядра, пам'ять і диск.

9. Чого в тарифах немає - чесно

  • Запасу під сезонний сплеск на Старті немає. 1 ядро - це 1 ядро, і в пік воно не розтягується. Якщо запускаєте рекламу на розпродаж, Старт - неправильний план.
  • Аптайм - 99.9%, а не «завжди онлайн». Це до 43 хвилин недоступності на місяць. Доступність перевіряється кожні 5 хвилин, тож про збій я дізнаюсь раніше за вас, але для магазину в сезон навіть 10 хвилин простою - це кілька втрачених кошиків. Якщо на певну дату у вас запланований великий розпродаж, попередьте підтримку заздалегідь.
  • Виділеного IP на шаред-планах немає, він є тільки у VPS Преміум і Максимум. Для більшості магазинів він не потрібен; якщо платіжна система чи 1С вимагає фіксованого IP, спершу спитайте в підтримці.
  • Сервери у Франції, не в Україні. Статику покупцям з України роздає Cloudflare з найближчого вузла.
  • Оплата хостингу зараз - за реквізитами, з ручною активацією протягом дня. Закладайте це в терміни, якщо переїжджаєте впритул до сезону.

Якщо магазину ще немає і робити його з нуля немає ні часу, ні бюджету, є інший шлях - готовий магазин на OpenCart в оренду, від 288 грн/міс при річній оплаті, де хостинг і SSL уже в ціні.

Чек-лист перед сезоном

  1. Згадайте, чи приходили у вересні листи про перевищення ліміту або помилки 503: якщо так - міняйте план у жовтні.
  2. Для магазину з рекламою - щонайменше 3 ядра і 4 ГБ RAM, тобто Бізнес.
  3. Перевірте вільне місце: має лишатися запас мінімум на одну повну копію магазину.
  4. Зафіксуйте версію PHP і движка, всі оновлення - до середини листопада, на тестовій копії.
  5. Один раз відновіть магазин з бекапу на тестовий піддомен, щоб знати, скільки це займає.
  6. Налаштуйте дублювання замовлень у Telegram або CRM.
  7. Відправте собі тестове замовлення і перевірте, що лист не в спамі.
  8. Пройдіть покупку з телефону і засічіть швидкість кошика та фільтрів.
  9. Якщо переїжджаєте - робіть це до 1 листопада: перенесення безкоштовне, зазвичай 30 хвилин - 2 години, але домену потрібен час, щоб DNS оновився всюди (як переїхати без простою).

Підсумок

Хостинг для інтернет-магазину вибирають за процесором і за тим, як поводяться бекапи й пошта в день, коли щось пішло не так. Гігабайти і «безлімітний трафік» тут другорядні. Робочому магазину з рекламою потрібні 3 ядра - це Бізнес за 350 грн/міс при оплаті за рік, а все інше вирішує підготовка в жовтні.

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