[Из песочницы] Выбор VPS. Битва хостингов
Знаете, что заметила наша небольшая команда? Если какое-то время назад, буквально в январе, мы выбирали IT-инфраструктуру весьма халатно, то сейчас отношение сильно поменялось. Ресурсов реально меньше (никому не верьте, в ИТ тоже!) и хочется уже получить не первый софт/хостинг/приложение с красивым сайтом, а надёжное, удобное, классное решение за разумные, адекватные деньги. А это, при всей широте выбора, та ещё проблема. Нам понадобился хостинг и… мы поняли, что выбрать его не так просто. Мы попали во власть известной дилеммы: «надёжный, недорогой, удобный — выбери любые два признака». Выкладываем результаты своего поиска на Хабре с робкой надеждой, что наши муки и тесты кому-то пригодятся. Читайте, пользуйтесь, советуйте! Ну и это… давайте все выплывем)
Intro
Нашей команде для одного веб-проекта (пока это секрет) понадобился хостинг, который сделал бы наш сервис доступным для совместной работы 24/7. До этого мы пользовались разными shared-хостингами, но нам такой вариант хостинга не подходит, потому что такие провайдеры редко обновляют ПО, и даже если и есть выбор версий MySQL, PHP и Apache, то обычно есть несколько устаревших и сильно устаревших версий. И не у всех есть инструментарий для работы с сертификатами Let«s Encrypt, например. Но недавно мы решили обратить внимание на выделенные виртуальные машины. С одной стороны, чуть больше обслуживания ложится на наши плечи, но с другой стороны, мы получаем полный контроль над всем установленным ПО.
Выбор жертв
Есть несколько различных сервисов по подбору хостингов, мы подбирали конфигурацию виртуального сервера исходя из соображений, что нам нужно 2 ядра ЦП, 8 ГБ ОЗУ и не менее 50 ГБ SSD и получили следующий список:
- boodet.online
- firstvds.ru
- fornex.com
- fozzy.com
- ipipe.ru
- ispserver.com
- profitserver.ru
- ruvds.com
- vdsnow.ru
Познакомимся поближе
boodet.online
Можно купить 10, 20, 60, 100, 250, 500, 1000 или 2000 ГБ.
Ну и для каждых значений ЦП и ОЗУ есть ограничения. Например, чтобы воспользоваться 12 ГБ ОЗУ, меньше 6 ядер ЦП заказать нельзя, и это следующее после 8 ГБ значение. Можно заказать VPS c аж до 48 ядер и до 224 ГБ ОЗУ (Минимум — 1 ядро и 0,5 ГБ ОЗУ). При оплате на год стоимость сервера за месяц превращается в 952 ₽.
Понравилось: низкая цена
Не понравилось: отсутствие полной гибкости конфигурации.
Нюансы: удаление сервера занимает некоторое время. Возможно, какой-то из этапов выполняется вручную. При возврате средств хостер требует явно указать реквизиты источника платежа. Единственный хостер с такими требованиями среди встретившихся нам.
firstvds.ru
Здесь можно выбрать нужное количество ядер виртуального сервера от 2 до 8 шт., ОЗУ с шагом в 2 ГБ до 32 ГБ и диска с шагом в 10 ГБ от 20 до 2000 ГБ. Скидка при заказе на срок больше месяца отсутствует и составляет 1549 ₽ в месяц.
Понравилось: настраиваемая конфигурация VDS, оплата через систему быстрых платежей с помощью QR-кода.
Не понравилось: удаление сервера до окончания расчётного периода не предусмотрено, но в качестве исключения можно удалить через техподдержку.
fornex.com
Выбор только из фиксированных конфигураций. 2711,76 ₽ в месяц при оплате на год.
Не понравилось: отсутствие гибкой конфигурации.
Нюансы: функция удаления просто генерирует заявку в техподдержку.
fozzy.com
Конфигуратора нет, есть готовые тарифы, будем опираться на вируталку с 2 ГБ RAM, 2 ядра, 45 ГБ.
И добавим к нему 6 ГБ. Стоимость — 1 939,00 ₽ в месяц.
Не понравилось: отсутствие нормального конфигуратора.
ipipe.ru
Здесь тоже VPS нужно собирать как конструктор. NVMe –2 + 6 ГБ ОЗУ.
Получаем 1 459,00 ₽ в месяц.
Не понравилось: отсутствие нормального конфигуратора.
ispserver.com
Здесь конфигуратор позволяет выбрать нужное количество ядер от 2 до 8 шт, ОЗУ с шагом в 2 ГБ до 32 ГБ и диска с шагом в 10 ГБ от 20 до 2000 ГБ.
Понравилось: настраиваемая конфигурация.
Не понравилось: удаление сервера до окончания расчётного периода не предусмотрено, но в качестве исключения можно удалить через техподдержку.
profitserver.ru
Здесь есть полноценный конфигуратор, и заказываемое нами количество RAM — максимальное, которое доступно для заказа, а минимально можно заказать 1 ГБ. Ядер можно заказать от 1 до 8 шт., а диска — от 20 до 100 ГБ. При оплате на год стоимость составляет 1 668,50 ₽ в месяц
Понравилось: настраиваемая конфигурация, оплата через систему быстрых платежей с помощью QR-кода.
Не понравилось: отказали в удалении сервера и возврате средств.
ruvds.com
Есть полноценный конфигуратор. Доступно 1 — 16 ядер, 0,5 — 16 ГБ ОЗУ и 10 — 600 ГБ диска.
Но мы выбрали готовый тариф, потому что так дешевле — всего 1333 ₽ в месяц.
Понравилось: настраиваемая конфигурация.
Не понравилось: выбранный тариф можно купить только ровно на три месяца, и раньше чем за несколько дней до окончания расчётного периода продлить сервер нельзя.
vdsnow.ru
Тут есть полноценный конфигуратор. Можно выбрать от 1 до 8 ядер, от 1 до 32 ГБ ОЗУ и от 10 до 150 ГБ диска. 1320 ₽ ежемесячно без скидки при оплате на более длительный период.
Понравилось: гибкая конфигурация.
Цель битвы
Мы отобрали несколько сервисов решили выбрать из них наиболее подходящий как по цене, так и по производительности. Надеяться найти сервис, который будет и дешёвым, и производительным — утопия, поэтому мы постараемся найти сбалансированное решение.
Подготовка к битве
Чтобы не изобретать велосипед и не тратить много времени, мы решили использовать готовый пакет тестов производительности — Phoromatic. Сначала была идея просто запускать какой-нибудь консольный бенч (вроде sysbench) через cron по расписанию. Но немного погуглив, нашли очень занятный вариант: www.phoronix-test-suite.com.
Phoronix Test Suite (PTS) — это бесплатное программное обеспечение с открытым исходным кодом для Linux и других операционных систем, разработанное Майклом Ларабелем и Мэтью Типпеттом.
Тестовый пакет Phoronix был одобрен такими сайтами, как Linux.com, LinuxPlanet, а Softpedia назвал его «лучшей платформой для тестирования производительности». Phoronix Test Suite также используется Tom’s Hardware, ASELabs и другими сайтами отзывов.
По сути своей это огромная библиотека различных тестовых задач, с помощью которой можно оценить качество и стабильность работы как целой физической машины, так и провести узкоспециализированный тест, направленный на что-то конкретное. Но особенно нас привлекла подсистема Phoromatic.
Phoromatic — это веб-система дистанционного управления тестами для Phoronix Test Suite. Она способна выполнять автоматическое выполнение тестов по расписанию или конкретному событию (триггеру). Phoromatic может одновременно управлять несколькими тестовыми узлами в тестовой ферме или распределённой среде.
Phoromatic запускается на отдельном сервере, после чего к нему подключаются тестовые машины. Процесс максимально прост, разработчики предоставили в своём репозитории готовые скрипты для установки как для Unix-систем, так и для Windows. Нам остаётся только проследить за наличием необходимых для работы зависимостей и выполнить скрипт установки, дальше вся работа будет вестись в веб-интерфейсе Phoromatic.
После запуска Phoromatic переходи в веб-интерфейс, где нам будет предложено указать учётные данные администратора. После этого откроется главная страница системы:
Вообще Phoromatic умеет самостоятельно разворачивать необходимые компоненты на тестовых машинах. Вам нужно только предоставить доступ по SSH:
Это может быть удобным, если у вас огромный парк тестируемых машин. Мы же пошли по другому пути. На каждой тестовой машине устанавливался Phoronix Test Suite и при помощи несложной команды:
phoronix-test-suite phoromatic.connect my-domain.xyz:8855/1P81YS
они присоединялись к серверу Phoromatic. Далее мы объединили все системы в одну группу, что позволило запускать тесты синхронно на всех машинах.
Затем приступаем к выбору необходимых тестах. Остановились на следующем комплекте:
System CPU\RAM:
>> Sysbench [pts/sysbench-1.0.0]
This is a benchmark of Sysbench with CPU and memory sub-test
>> Apache Benchmark [pts/apache-1.7.2]
This is a test of ab, which is the Apache benchmark program. This test profile measures how many requests per second a given system can sustain when carrying out 1,000,000 requests with 100 requests being carried out concurrently.
>> PHPBench [pts/phpbench-1.1.5]
PHPBench is a benchmark suite for PHP. It performs a large number of simple tests in order to bench various aspects of the PHP interpreter. PHPBench can be used to compare hardware, operating systems, PHP versions, PHP accelerators and caches, compiler options, etc. The number of iterations used is 1,000,000.
===
CPU:
>> Swet [pts/swet-1.0.0]
Swet is a synthetic CPU/RAM benchmark, includes multi-processor test cases.
>> OpenSSL [pts/openssl-1.11.0]
OpenSSL is an open-source toolkit that implements SSL (Secure Sockets Layer) and TLS (Transport Layer Security) protocols. This test measures the RSA 4096-bit performance of OpenSSL.
===
RAM:
>> pmbench [pts/pmbench-1.0.2]
Pmbench is a Linux paging and virtual memory benchmark. This test profile will report the average page latency of the system.
- Concurrent Worker Threads: 2 - Read-Write Ratio: 50%
>> Tinymembench [pts/tinymembench-1.0.2]
This benchmark tests the system memory (RAM) performance.
===
Network:
>> Loopback TCP Network Performance [pts/network-loopback-1.0.3]
This test measures the loopback network adapter performance using a micro-benchmark to measure the TCP performance.
===
Disc:
>> Flexible IO Tester [pts/fio-1.13.2]
Fio is an advanced disk benchmark that depends upon the kernel's AIO access library.
- Random Read - Engine: Linux AIO - Buffered: Yes - Direct: No - Block Size: 4KB - Disk Target: Default Test Directory
- Random Read - Engine: Linux AIO - Buffered: Yes - Direct: No - Block Size: 4MB - Disk Target: Default Test Directory
- Random Read - Engine: Linux AIO - Buffered: Yes - Direct: No - Block Size: 512KB - Disk Target: Default Test Directory
- Random Read - Engine: Linux AIO - Buffered: Yes - Direct: No - Block Size: 64KB - Disk Target: Default Test Directory
- Random Write - Engine: Linux AIO - Buffered: Yes - Direct: No - Block Size: 4KB - Disk Target: Default Test Directory
- Random Write - Engine: Linux AIO - Buffered: Yes - Direct: No - Block Size: 4MB - Disk Target: Default Test Directory
- Random Write - Engine: Linux AIO - Buffered: Yes - Direct: No - Block Size: 512KB - Disk Target: Default Test Directory
- Random Write - Engine: Linux AIO - Buffered: Yes - Direct: No - Block Size: 64KB - Disk Target: Default Test Directory
>> SQLite [pts/sqlite-2.1.0]
This is a simple benchmark of SQLite. At present this test profile just measures the time to perform a pre-defined number of insertions on an indexed database.
- Threads / Copies: 1
Подобный набор может показаться излишним, но мы хотели получить представление о работе каждого из компонентов системы: диска, оперативной памяти, центрального процессора, сети.
Теперь нужно создать само расписание, по которому будут выполняться тесты:
Накидываем туда все выбранные нами тесты:
В итоге у нас получилось 4 сценария с одинаковым набором тестов. Сценарии запускались в 04:00, 10:00, 14:00 и 19:00 каждый день. Инициировали последовательный старт всех выбранных тестов и получали результаты. Теперь оставалось только ждать. Спустя 2 недели мы решили, что хватит, и выключили сценарии.
С результатами можно ознакомиться прямо в браузере и даже провести какие-то сравнения между тестируемыми площадками. Однако при таком крупном объёме это делать очень неудобно. Поэтому мы выгрузили все результаты в CSV и самостоятельно проанализировали результаты. К данной статье прикреплена получившаяся у нас таблицу, чтобы вы сами могли проанализировать результаты.
Битва
Предлагаем вашему вниманию результаты тестирования.
Тест производительности процессора sysbench
Тест производительности памяти sysbench
Тест скорости работы дисков Flexible IO Tester IOPS
Тест скорости работы дисков Flexible IO Tester MB/s
Тест производительности веб-сервера Apache Benchmark Static Web Page Serving
Тест производительности веб-сервера PHP Benchmark
Тест производительности процессора Swet
Тест работоспособности сетевого контроллера Transfer Data Via Loopback
Тест производительности памяти Tinymembench
Тест производительности диска pmbench
Тест производительности работы с базой данных SQLite
Тест производительности процессора OpenSSL
Анализ полученных результатов
Выгрузив результаты тестирования по каждому серверу, мы объединили их на нескольких листах в LibreOffice Calc (альтернатива MS Excel) Для каждого хостера — отдельный лист. Далее было взято среднее арифметическое для всех полученных результатов в рамках каждого теста. Таким образом, мы получили усреднённые результаты без привязки ко времени, что позволит более адекватно оценить производительность машин, не учитывая временные наплывы нагрузки, создаваемые серверами прочих клиентов.
При желании вы можете самостоятельно построить графики по каждому тесту, для каждого хостера и понять насколько сильно отличается производительность в час дня во вторник от 3 ночи в субботу.
Полученные усреднённые результаты были сведены на один лист с незамысловатым названием «Arithmetical mean». Теперь можно строить диаграммы, которые наглядно отразят разницу между хостерами для каждого теста. На листе «Final result» вы как раз можете увидеть полученные данные в удобном для человеческого восприятия виде. В каждом столбце указано как фактическое среднее арифметическое значение, так и оно же, но в пересчёте на 1000 ₽. Это позволит нам понять, какой из хостеров лучше по соотношению цена-производительность. На диаграммах вы можете увидеть два столбца:
- Синий — это фактическое значение
- Красный — в пересчёте на 1000 ₽.
В итоговом зачёте учитывались значения с поправкой на стоимость. Также обратите внимание, что не во всех тестах больше значит лучше, это указанно столбце «B»:
- HIB — Higher Is Better или More Is Better (Чем больше, тем лучше)
- LIB — Low Is Better или Fewer Is Better (Меньше — значит лучше)
Итак, мы получили диаграммы, отражающие усреднённое, не привязанное ко времени значение для каждого теста в отдельности, а также эти же значения, но с поправкой на стоимость тестируемой конфигурации. Благодаря им, относительно просто понять слабые и сильные стороны хостеров.
Определение победителя
Перейдём к и итогам. Чтобы определить для себя фаворита, мы назначили каждому месту, занятому в том или ином тесте, определённый вес. Чем ближе к первенству, тем лучше. Таким образом, за первое место хостер получает 9 баллов, за последнее — 1 (и наоборот, если речь идёт о LIB результатах). Далее мы просто суммируем баллы, полученные по каждому тесту, и строим последнюю диаграмму.
Выше всех результаты оказались у ruvds.com и ipipe.ru, однако по соотношению цена-производительность ruvds.com выглядит привлекательнее.
Заключение
Хостинги схлестнулись не на шутку — у нас были практически идентичные конфигурации из одного ценового диапазона, но, как мы говорили в начале, сейчас каждая мелочь решает. Выявить победителя нам всё же удалось, но прежде чем мы его объявим, есть пара вещей, на которые хочется обратить внимание:
- не копируйте слепо наш выбор — у вас могут быть другие цели, задачи, вводные и проекты; вы можете сэкономить и найти оптимальное решение именно для себя;
- не экономьте на спичках — дешёвый хостинг может оказаться откровенно опасным и навредить не только вашему проекту, но и всему бизнесу;
- не пожалейте время на выбор и анализ решения.
Ну, а нас по соотношению цена-качество удивил Ruvds (а конкретно тариф «Турбо») — там не только выдающиеся результаты производительности, но и адекватная цена. Так что парни не зря ведут здесь блог — вероятно, им не стыдно смотреть в глаза ИТ-кластеру Хабра. Ну, а вы — думайте сами, решайте сами… И, главное, не проигрывайте!