Как выбрать быстрый виртуальный сервер

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

Для одного небольшого проекта нам понадобился быстрый VPS со следующими требованиями:

  • процессор с частотой от 4GHz (1 ядро) и быстрые NVMe диски;

  • размещение в регионе с хорошими каналами и связностью, лучше всего Нидерланды или Германия;

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

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

Вот наши кандидаты:

Кандидат

Конфигурация VPS

Заявленная
частота CPU

≈ Цена в мес.
(при оплате за год)

Хостер 1

1 core/1Gb RAM, 25Gb NVMe

до 5.7 GHz

$4.50

Хостер 2

1 core/2Gb RAM, 30Gb NVMe

до 5.2 GHz

$7.00

Хостер 3

1 core/1Gb RAM, 30Gb NVMe

до 4 GHz

$7.50

Тестирование VPS

Замеры показателей работы CPU и диска мы выполняли с помощью скрипта nench.sh и делали это ежечасно в течение недели. Для этого на каждом сервере было создано cron-задание:

0 * * * * (wget -qO- wget.racing/nench.sh | bash) 2>&1 | tee -a report.log

В результате на каждом сервере мы получили полумегабайтный report.log с результатами тестов. Из этого лога мы решили взять наиболее универсальные показатели общей оценки скорости работы:

  • для CPU — время расчёта 500 Мб хешей SHA256, измеряется в секундах и чем меньше время, тем лучше;

  • для диска — IOPS, т.е. количество операций ввода-вывода в секунду. Здесь наоборот — лучше больше.

Чтобы извлечь эти данные из файла report.log и представить их в формате CSV, был написан bash скрипт:

parse.sh

#!/bin/bash

apt install bc -y

echo "Date and Time;CPU;IOPS" > report.csv

while IFS= read -r line; do

  if [[ "$previous" == " nench.sh "* ]]; then
    datetime=$(echo "$line" | sed -rn 's/.*timestamp:\s+(.*)\sUTC.*/\1/p')
  fi
  
  if [[ "$previous" == "CPU: SHA256-hashing 500 MB"* ]]; then
    cpu=$(echo "$line" | sed -rn 's/\s+(.*) seconds.*/\1/p')
  fi
  
  if [[ "$previous" == "ioping: sequential read speed"* ]]; then
    iops=$(echo "$line" | sed -rn 's/\s+generated.*, ([0-9]+) iops, .*/\1/p')
    if [ -z "$iops" ]; then
      kiloiops=$(echo "$line" | sed -rn 's/\s+generated.*, ([0-9.]+) k iops, .*/\1/p')
      iops="$(echo "$kiloiops*1000" | bc | sed '/\./ s/\.\{0,1\}0\{1,\}$//')"
    fi
  fi

  if [ -n "${datetime}" ] && [ -n "${cpu}" ] && [ -n "${iops}" ]; then
     echo "$datetime;$cpu;$iops" >> report.csv
     unset datetime cpu iops
  fi
  
  previous="$line"

done < report.log

Визуализировав полученные значения, мы увидели следующее:

6c0d40b2fbf26afb778746c4b0a45eef.pngb69146e6fd932b1570982250ea24d015.png

В тестах процессора лидирует Хостер 1, по диску же явный лидер — это Хостер 2. Также по графикам IOPS видно, что Хостер 1 и Хостер 3 очевидно ограничивают использование диска, т.к. для NVMe столь невысокие IOPS не характерны.

Итог

Лидерами нашего теста оказались: Хостер 1 по скорости CPU, и Хостер 2 по скорости диска.

Для себя мы выбрали Хостера 1, поскольку критерий скорости диска для нас вторичен, а цена на VPS у него существенно ниже. Справедливости ради стоит сказать, что ценовое предложение Хостера 2 также было весьма интересно, т.к. на его одноядерном VPS оперативной памяти было в два раза больше, чем у конкурентов.

© Habrahabr.ru