[Из песочницы] Выбор VPS. Битва хостингов

Знаете, что заметила наша небольшая команда? Если какое-то время назад, буквально в январе, мы выбирали IT-инфраструктуру весьма халатно, то сейчас отношение сильно поменялось. Ресурсов реально меньше (никому не верьте, в ИТ тоже!) и хочется уже получить не первый софт/хостинг/приложение с красивым сайтом, а надёжное, удобное, классное решение за разумные, адекватные деньги. А это, при всей широте выбора, та ещё проблема. Нам понадобился хостинг и… мы поняли, что выбрать его не так просто. Мы попали во власть известной дилеммы: «надёжный, недорогой, удобный — выбери любые два признака». Выкладываем результаты своего поиска на Хабре с робкой надеждой, что наши муки и тесты кому-то пригодятся. Читайте, пользуйтесь, советуйте! Ну и это… давайте все выплывем) 

ywryppotf79z-oewrmzcgzsa1fm.jpeg

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 ₽.

nAWVyv5jT8nYCN6gjKD7z6WlYcjShsORDXB181n6


Понравилось: низкая цена

Не понравилось: отсутствие полной гибкости конфигурации.

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


firstvds.ru


Здесь можно выбрать нужное количество ядер виртуального сервера от 2 до 8 шт., ОЗУ с шагом в 2 ГБ до 32 ГБ и диска с шагом в 10 ГБ от 20 до 2000 ГБ. Скидка при заказе на срок больше месяца отсутствует и составляет 1549 ₽ в месяц.

7d6UUG_K4nO2uqlL2Cmbez8zy01QRjUZx3-01oEL


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

Не понравилось: удаление сервера до окончания расчётного периода не предусмотрено, но в качестве исключения можно удалить через техподдержку.


fornex.com


Выбор только из фиксированных конфигураций. 2711,76 ₽ в месяц при оплате на год.

c65TNTQ8YmDMzdhznEykgOoTnDiTQRer9Wrs4dLH


Не понравилось: отсутствие гибкой конфигурации.

Нюансы: функция удаления просто генерирует заявку в техподдержку.


fozzy.com


Конфигуратора нет, есть готовые тарифы, будем опираться на вируталку с 2 ГБ RAM, 2 ядра, 45 ГБ.

Qmp2-A4Fa4l68i0IF5npgxKrABu5PwX6nML9BQ-9


И добавим к нему 6 ГБ. Стоимость — 1 939,00 ₽ в месяц.

wsocYdk-vZHuptwL4ZgPdm9EfxR5ttDbEfYQ6kcP


Не понравилось: отсутствие нормального конфигуратора.

ipipe.ru


Здесь тоже VPS нужно собирать как конструктор. NVMe –2 + 6 ГБ ОЗУ.

SlzlY6wDKluef1-gltBbJgZmLcvANIYE5c8S5HEX


Получаем 1 459,00 ₽ в месяц.

zKYXmiwHVYIc9F0AN5Hv8PjT5-5QJu_odyzP5RFL


Не понравилось: отсутствие нормального конфигуратора.

ispserver.com


Здесь конфигуратор позволяет выбрать нужное количество ядер от 2 до 8 шт, ОЗУ с шагом в 2 ГБ до 32 ГБ и диска с шагом в 10 ГБ от 20 до 2000 ГБ.

b8l9yV57g94AOmoG_rGNMH7kQO8Kc196DTI7dm3f


Понравилось: настраиваемая конфигурация.

Не понравилось: удаление сервера до окончания расчётного периода не предусмотрено, но в качестве исключения можно удалить через техподдержку.


profitserver.ru


Здесь есть полноценный конфигуратор, и заказываемое нами количество RAM — максимальное, которое доступно для заказа, а минимально можно заказать 1 ГБ. Ядер можно заказать от 1 до 8 шт., а диска — от 20 до 100 ГБ. При оплате на год стоимость составляет 1 668,50 ₽ в месяц

LCV6eqbiTvns92TZfJBE2B2NoTc_4l_pZVWLvH11


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

Не понравилось: отказали в удалении сервера и возврате средств.


ruvds.com


Есть полноценный конфигуратор. Доступно 1 — 16 ядер, 0,5 — 16 ГБ ОЗУ и 10 — 600 ГБ диска.

LYz-GFirer_VDeT84hru-GtafdEvzFJTrQRdAQl6


Но мы выбрали готовый тариф, потому что так дешевле — всего 1333 ₽ в месяц.

YCxRMtCTDPsjvMUhmz8k0WMuauuYnYZty-1b3IKd


Понравилось: настраиваемая конфигурация.

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


vdsnow.ru


Тут есть полноценный конфигуратор. Можно выбрать от 1 до 8 ядер, от 1 до 32 ГБ ОЗУ и от 10 до 150 ГБ диска. 1320 ₽ ежемесячно без скидки при оплате на более длительный период.

T6Gey0x6-I_Dl-abU_SFzJ_qDahfHFt83zUdsfF4


Понравилось: гибкая конфигурация.

Цель битвы


Мы отобрали несколько сервисов решили выбрать из них наиболее подходящий как по цене, так и по производительности. Надеяться найти сервис, который будет и дешёвым, и производительным — утопия, поэтому мы постараемся найти сбалансированное решение.

Подготовка к битве


Чтобы не изобретать велосипед и не тратить много времени, мы решили использовать готовый пакет тестов производительности — 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 переходи в веб-интерфейс, где нам будет предложено указать учётные данные администратора. После этого откроется главная страница системы:

RQu-rvCBQ7-rmFDJ15EbzICTrRHHtqAVQLLiX0Vh


Вообще Phoromatic умеет самостоятельно разворачивать необходимые компоненты на тестовых машинах. Вам нужно только предоставить доступ по SSH:

x4w-4MpEZMPlm95ew_2PU-yB7EGcj7a4HyqUHzYM


Это может быть удобным, если у вас огромный парк тестируемых машин. Мы же пошли по другому пути. На каждой тестовой машине устанавливался Phoronix Test Suite и при помощи несложной команды:

phoronix-test-suite phoromatic.connect my-domain.xyz:8855/1P81YS


они присоединялись к серверу Phoromatic. Далее мы объединили все системы в одну группу, что позволило запускать тесты синхронно на всех машинах.

yXg_k8z4eDGV0cEwCOnLVX3Bibucu7xOnH5HtZHv


Затем приступаем к выбору необходимых тестах. Остановились на следующем комплекте:

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


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

Теперь нужно создать само расписание, по которому будут выполняться тесты:

RAY0NJJcikWZcQAkaH9L5x_TwBHA30frTH_vYng7


l9ovlEUF8fSM1AyPnCX0LAkuZ4nd0OfRIPOLrtfF


1nKpIOHehBka-bLLjC9gB7b7s2QaJYsO21zq8da5


Накидываем туда все выбранные нами тесты:

thAzqeuh-Ywi_oP2Bha7rwkhiBSd4oIsPLhrDdp1


В итоге у нас получилось 4 сценария с одинаковым набором тестов. Сценарии запускались в 04:00, 10:00, 14:00 и 19:00 каждый день. Инициировали последовательный старт всех выбранных тестов и получали результаты. Теперь оставалось только ждать. Спустя 2 недели мы решили, что хватит, и выключили сценарии.

С результатами можно ознакомиться прямо в браузере и даже провести какие-то сравнения между тестируемыми площадками. Однако при таком крупном объёме это делать очень неудобно. Поэтому мы выгрузили все результаты в CSV и самостоятельно проанализировали результаты. К данной статье прикреплена получившаяся у нас таблицу, чтобы вы сами могли проанализировать результаты.

Битва


Предлагаем вашему вниманию результаты тестирования.

caSrMyzSamniEBrQW9eCGtgu2JsoPzZqiOcfOpXB


Тест производительности процессора sysbench

x3vpB74sTb4n-m0EsEcwCm40zKjCIusb-m6wdgsj


Тест производительности памяти sysbench

ZHnEtdxEVqBPKHFxixnxtwuWAMcQLRYS4wkl290Y


Тест скорости работы дисков Flexible IO Tester IOPS

0uBNuhi4aVLgCyFUP7Hfb6LxUSwhTpTnkPvnsSTw


Тест скорости работы дисков Flexible IO Tester MB/s

Zf71oeWCXzAH1yHrDgqpy4-kAAtpWtJofzj_UO1b


Тест производительности веб-сервера Apache Benchmark Static Web Page Serving

g2CnQrhYDXl-c4eEFuecq7sSGKs1ft6zR3Q_v3uC


Тест производительности веб-сервера PHP Benchmark

g8JgjVP2OjvYegMNTrw7YXqRGti60z1K7rr3egHs


Тест производительности процессора Swet

gG2nRnWtR1bImrt7N4_DaKau5eGmrqBLIPkfFXx-


Тест работоспособности сетевого контроллера Transfer Data Via Loopback

36nj2xGlG6Xr7Dhg2NrKMJfT6xqmXV4ZMYe3CfHg


Тест производительности памяти Tinymembench

zXlo8g3l8P5Cyo_KlbSXlHQD0IsrqtHPiMgTQrHE


Тест производительности диска pmbench

_2fQQVR182i631fDTINZgRpf6OSk2vUrLfibUkar


Тест производительности работы с базой данных SQLite

zN28PbkJBs4-a_HYs7kaR8ZyW4NStvxSfofIY2DS


Тест производительности процессора 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 выглядит привлекательнее.

9y7YuMdce80-cioux8tlS57wKLSDBgI2FtPv8T0u


Заключение


Хостинги схлестнулись не на шутку — у нас были практически идентичные конфигурации из одного ценового диапазона, но, как мы говорили в начале, сейчас каждая мелочь решает. Выявить победителя нам всё же удалось, но прежде чем мы его объявим, есть пара вещей, на которые хочется обратить внимание:

  • не копируйте слепо наш выбор — у вас могут быть другие цели, задачи, вводные и проекты; вы можете сэкономить и найти оптимальное решение именно для себя;
  • не экономьте на спичках — дешёвый хостинг может оказаться откровенно опасным и навредить не только вашему проекту, но и всему бизнесу;
  • не пожалейте время на выбор и анализ решения.


Ну, а нас по соотношению цена-качество удивил Ruvds (а конкретно тариф «Турбо») — там не только выдающиеся результаты производительности, но и адекватная цена. Так что парни не зря ведут здесь блог — вероятно, им не стыдно смотреть в глаза ИТ-кластеру Хабра. Ну, а вы — думайте сами, решайте сами… И, главное, не проигрывайте!

© Habrahabr.ru