Для того, чтобы выбрать сервер в аренду для нашего проекта (тарифы можно посмотреть тут), нам необходимо выяснить цели и задачи проекта, проанализировать нагрузку, планируемую посещаемость, вовлечение посетителей, глубину просмотра и множество других факторов, от которых прямо зависит нагрузка на сервер.
Допустим наш проект - разработанный с нуля школьный журнал посещаемости и оценки для учеников, потенциальные пользователи - родители учеников, учителя и сами ученики, максимум посетителей до 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.



