Для того, щоб вибрати сервер в оренду для нашого проекту (тарифи можна подивитися тут), нам необхідно з'ясувати цілі та завдання проекту, проаналізувати навантаження, плановану відвідуваність, залучення відвідувачів, глибину перегляду та безліч інших факторів, від яких прямо залежить навантаження на сервер.
Припустимо наш проект - розроблений з нуля шкільний журнал відвідуваності та оцінки для учнів, потенційні користувачі - батьки учнів, вчителі та самі учні, максимум відвідувачів до 1000 користувачів. Середній час проведення на сайті до 5 хвилин, а середня кількість відвіданих сторінок до 10 сторінок за сеанс.

Як подивитися кількість запитів
Далі ми відкриваємо консоль розробника в Google Chrome, вкладка Network і перезавантажуємо сторінку з нашим проектом, нас цікавить кількість запитів, які з'являться після перезавантаження сторінки. У нашому випадку це 69 запитів, множимо 69 запитів на 10 сторінок, отримуємо в середньому 690 запитів за сеанс на одного користувача, тому що у нас відвідують сайт максимум 1000 користувачів, отримуємо 690 x 1000 = 690 тисяч запитів. Зазвичай батьки чи учні не заходять одночасно все, щоб подивитись свою успішність, тому можемо сміливо розділити на 16 годин (8 годин люди сплять). Вийшло 43125 запитів на годину.
У середньому, навантаження на сервер розподіляється рівномірно, і якщо ми маємо 43125 запитів на годину, це приблизно 12 запитів на секунду.
Для обробки такої кількості запитів на сайті з використанням PHP8 та MariaDB 10.2 потрібно врахувати кілька ключових факторів:
Ресурси на один запит: Як ми з'ясували, у середньому один PHP-процес може споживати близько 20-50 МБ оперативної пам'яті, а MariaDB для обробки запитів використовує від 1 до 10 МБ. Для простоти візьмемо середнє — 30 МБ на один активний процес.
Пікові навантаження: Зазвичай користувачі не розподіляються рівномірно протягом дня — можуть бути піки активності (наприклад, вранці чи ввечері), коли одночасно заходять більше людей. Тому варто враховувати, що сервер повинен справлятися з цими піками.
Тепер подивимося на зразкову конфігурацію сервера для цього проекту.
Оперативна пам'ять: Якщо ми очікуємо до 50 активних користувачів одночасно, при 30 МБ на кожного, це приблизно 1.5 ГБ оперативної пам'яті для активних процесів. Плюс потрібно залишити місце для операційної системи та інших фонових завдань, тому рекомендований обсяг оперативної пам'яті — щонайменше 4 ГБ.
Процесор: Середній PHP-запит може використовувати 5-20% одного ядра процесора. Якщо одночасно працює 50 процесів, то знадобиться хоча б 2-4 ядра процесора, щоб забезпечити стабільну роботу.
Дисковий простір: Залежно від обсягу даних (учнів, оцінок, відвідуваності) та завантажень медіафайлів, мінімальний об'єм SSD-диска можна починати з 40-60 ГБ, з можливістю розширення.

Тарифи на віртуальні сервери VPS від компанії СИДАТА
Для таких вимог ідеально підійде VPS-сервер з 2 ядрами та 4 ГБ оперативної пам'яті, наприклад тариф BASE або BASE+ від компанії SIDATA :
Для великого проекту, де очікується велика кількість користувачів або складні завдання (наприклад, регулярні звіти, статистика, аналітика), можна розглянути дедікейтед (виділений сервер), але на початковому етапі VPS буде оптимальним та економічно вигідним варіантом.
Наприклад, у випадку, коли батьки одночасно дивитися оцінки, це як правильно період іспитів або кінець семестру. У такому разі кількість запитів у 690 тисяч зможе стати піковим і тоді ресурси виділеного сервера стануть необхідними для забезпечення стабільної роботи. Давайте порахуємо, які ресурси будуть потрібні для обробки 690 тисяч запитів і запропонуємо оптимальний варіант виділеного сервера.
Як ми вже з'ясували, пікове навантаження може досягати 690 тисяч запитів у період іспитів або наприкінці семестру. Якщо на VPS сервері обробка такого обсягу даних може викликати затримки або навіть збої, виділений сервер зможе впоратися з цим завданням завдяки повному контролю над усіма ресурсами.
Процесор: При розрахунку запитів, якщо на VPS сервері в середньому було задіяно 2 ядра, для виділеного сервера краще вибрати як мінімум 4 ядра, щоб впоратися з піковими навантаженнями без проблем.
Оперативна пам'ять: Для підтримки кількох тисяч одночасних користувачів рекомендується щонайменше 32-64 ГБ оперативної пам'яті. Це дозволить ефективно кешувати дані та обробляти запити негайно.
Диски: Швидкі SSD-диски значно прискорюють час відгуку бази даних та завантаження сторінок. Мінімум, що знадобиться для стабільної роботи — це 512 ГБ SSD, але якщо планується зберігання великого обсягу даних (оцінки, файли учнів тощо), краще вибрати більше місця на диску та NVMe.
На основі вищенаведених розрахунків можна запропонувати такі виділені сервери:

Тарифи на виділені сервери від компанії СИДАТА
Intel Core i7 (4 x 3.4 GHz, 32 GB DDR4, 2 х 500 Gb HDD) — за 3400₴ на місяць. Цей сервер підходить для проектів середнього навантаження, але з піковими запитами він може відчувати нестачу оперативної пам'яті. Якщо немає впевненості у стабільності навантаження, можливо, варто розглянути потужніший варіант.
Intel Core i7 (4 x 3.6 GHz + HT, 64 GB DDR4, 2 х 512 Gb SSD) — за 3950₴ на місяць. Це оптимальний варіант для проекту, де передбачаються періодичні піки навантаження. Великий обсяг оперативної пам'яті (64 ГБ) та швидкі SSD-диски допоможуть швидко обробляти запити та кешувати дані.
Intel Xeon E3 (4 x 3.6 GHz + HT, 64 GB DDR4, 2 х 1 Tb SSD) — за 4950₴ на місяць. Для великих проектів з високою відвідуваністю і більшими обсягами даних цей сервер забезпечить відмінну продуктивність. Два 1-ТВ SSD-диски дозволять зберігати велику кількість даних, а процесор та пам'ять — справлятися з інтенсивними навантаженнями.
Якщо ваш проект очікує на регулярні піки активності, такі як під час іспитів або в кінці семестру, і якщо кількість запитів може досягати 690 тисяч, вам знадобиться більш потужне рішення, ніж стандартний VPS. Розглядаючи варіанти, Intel Core i7 з 64 GB оперативної пам'яті та SSD-дисками за 3950₴ на місяць стане оптимальним вибором для вашого проекту. Якщо проект продовжуватиме зростати, можна буде розглянути потужніші сервери, такі як Intel Xeon.



