Выбор dedicated сервера для сайтов

Давно не писал. Было очень много работы. На очереди статья как мы пережили короновирус и работу на карантине.

Эта статья написана в соавторстве с админом. Надеюсь, кому-то она будет полезна.

Тема сегодняшней статьи – быстродействие сайтов PHP на разных моделях процессоров или как выбрать оптимальный выделенный сервер

Наша задача разместить сайты максимально дешево и с большим количеством ресурсов. Под данных требования идеально подходят выделенные сервера. Отказоустойчивость будем обеспечивать собственными силами.


Есть задача – подобрать выделенный сервер для размещения сайтов с высокой посещаемостью. Часть сайтов написана на WordPress и Joomla, часть собственной разработки.


Использование shared хостинга и VPS по ряду причин нам не подходит.

При этом важно обеспечить отказоустойчивость сайтов, выделенные сервера прекрасны, но они тоже ломаются.

Использование сторонних облачных решений для нас слишком дорого, да надежно и все такое, но очень дорого.

Как планируем решать вопрос отказоустойчивости системы

В качестве front-end в стороннем супернадежном облаке разворачивается проксирующий сервер NGINX на внешнем IP. Требования к ресурсам минимальные: 2Гб памяти, 5Гб диск, 100Мбит канал. Стоимость такой VPS около 1500 – 2000 рублей в месяц с обеспечением SLA 99.98%

В качестве back-end будем использовать выделенные сервера в количестве 3шт. Почему три?

Два сервера отвечают за работу сайтов, а вот третий выполняет роль backup в реальном времени для первых двух.

Можно настроить сетевую файловую систему и таким образом добиться отказоустойчивости, но это сложно, долго и не факт, что будет надежно работать. В дальнейшем мы об этом подумаем, но здесь и сейчас времени на запуск у нас было 1,5 дня.

На сайтах изменяется только информация в базе данных, файлы меняются крайне редко.

Поэтому было принято такое решение: базы данных будем реплицировать через дамп каждые 3 часа, а файлы через RSYNC раз в 24 часа.

Выбор серверов для размещения сайтов

Требования к серверам:
Память 16-32Гб, диск SSD/NVMe 500Гб, процессор как можно мощнее.


Бюджет на все у нас 15 000 рублей в месяц.


Соответственно бюджету надо выбирать сервера не дороже 5т.р. в месяц.

Обязательным условием аренды является наличие IPKVM или IPMI. Есть площадки, которые предлагают дешевые сервера на Core I7 (к примеру chipcore, он же Селектел), но без доступа к IPKVM, нам это не подходит.

Для работы PHP как известно важна частота процессора, чем она выше, тем лучше.

В бюджет укладываются сервера:

Xeon E3-1231v3 до 3.8ГГц 4 ядра, 16Гб памяти, диски SSD 256Гб x 2шт. (в Интернет можно найти такой сервер до 5000р.)

AMD Ryzen™ 5 3400G 4 ядра до 4.2ГГц, 16Гб памяти, диск SSD 512Гб от проекта TRI Server.

Как показывает практика, лучше иметь 4 ядра по 4Ггц, чем 16 ядер по 2Ггц. С точки зрения больших нагрузок на сервер многоядерность — плюс, но чем выше частота процессора, тем быстрее выполняются скрипты PHP и запросы к базе MySQL, а значит на обработку одного запроса тратиться меньше времени.


Вывод такой: если большую часть запросов генерируют «медленные клиенты», лучше иметь много ядер, но с низкой частотой.


Под «медленными клиентами» мы понимаем соединения требующие передачи большого количества данных от сервера к клиенту, а значит длительного поддержания соединения с сервером. Таким примером может быть скачивание больших файлов или объемов данных, которые генерируются динамически и не поддаются нормальному кэшированию.

В большинстве случаев основная нагрузка ложиться на базу данных, т.е. back-end системы, а собственно пакет информации, передающийся клиенту от сервера минимален.

Давайте протестируем процессоры с точки зрения производительности PHP, для этого воспользуемся  AF’s PHP Benchmark tool

Сравнение быстродействия процессоров AMD Княут 5 3400G и Intel® Xeon® E3-1231v3Выделенный сервер с процессором Intel® Xeon® E3-1231v3 до 3.8ГГц 4 ядра

[GENERAL]
1/10 Cycles (if, while, do)  …………………. 2.98s
2/10 Generate Random Numbers  ………………… 1.21s
3/10 Objects  ………………………………. 2.30s
Time: 6.89

[STRINGS]
4/10 Simple Strings Functions  ……………….. 6.03s
5/10 Explode/Implode  ……………………….. 4.97s
6/10 Long Strings  ………………………….. 6.35s
7/10 String Hash  …………………………… 0.06s
Time: 17.66

[ARRAYS]
8/10 Fill arrays  …………………………… 3.59s
9/10 Array Sort (Integer Keys and Values)  …….. 8.76s
10/10 Array Sort (String Keys and Values)  …….. 13.28s
Time: .. 25.72

TOTAL TIME: 49.53

Результат очень хороший. Результаты тестов даже лучше, чем на процессоре E5-2630 2.30GHz, который у нас стоит под другие проекты.

Выделенный сервер с процессором AMD Ryzen™ 5 3400G 4 ядра до 4.2ГГц

[GENERAL]
1/10 Cycles (if, while, do)  …………………. 2.29s
2/10 Generate Random Numbers  ………………… 0.60s
3/10 Objects  ………………………………. 1.43s
Time: 4.36

[STRINGS]
4/10 Simple Strings Functions  ……………….. 5.18s
5/10 Explode/Implode  ……………………….. 3.33s
6/10 Long Strings  ………………………….. 3.38s
7/10 String Hash  …………………………… 0.04s
Time: 12.01

[ARRAYS]
8/10 Fill arrays  …………………………… 2.83s
9/10 Array Sort (Integer Keys and Values)  …….. 5.79s
10/10 Array Sort (String Keys and Values)  ……… 7.96s
Time: 16.84

TOTAL TIME: 32.83

Как говориться – шок, это по нашему! Разница в скорости довольно значительная. В принципе логика в происходящем есть.

Разберемся, почему десктопный процессор от AMD выиграл по очкам у серверного процессора от Intel

Во-первых у процессора AMD Ryzen™ 5 3400G выше начальная тактовая частота 3.7ГГц против 3.4ГГц у Intel® Xeon® E3-1231v3.

Во-вторых турбо частота у AMD тоже выше 4.2ГГц против 3.8ГГц у Xeon.

Ну вишенка на торте: у сборки на AMD память DDR4, а у Xeon DDR3.

Какой вывод:

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

Можно сказать, что серверные платформы надежнее. Согласен, так и есть. Но опять же какая разница, если мы так и так закладываемся на отказоустойчивость системы и по большому счету выход из строя одного из серверов не влияет на систему. Тем более сервера арендованные, если что-то случиться, нам заменят оборудование. Т.е. отказоустойчивость в данном случае не наша проблема.

Свои сервера размешать в ЦОД на десктопном железе, я бы поостерегся. Просто из-за времени реакции в случае поломки, а арендовать, почему бы и нет.