Как выбрать быстрый виртуальный сервер
На рынке виртуальных серверов сегодня можно насчитать более сотни хостеров с тысячами разных тарифов. Но если попытаться среди них найти предложения с быстрым процессором, доступные варианты можно пересчитать на пальцах. Видимо, при такой схеме работы «оверсейлить» ресурсы не так выгодно.
Для одного небольшого проекта нам понадобился быстрый VPS со следующими требованиями:
процессор с частотой от 4GHz (1 ядро) и быстрые NVMe диски;
размещение в регионе с хорошими каналами и связностью, лучше всего Нидерланды или Германия;
хостинг-компания много лет на рынке, с высокой оценкой при большом количестве отзывов.
По этому фильтру были найдены три хостера, у которых мы заказали по серверу, чтобы их протестировать и выбрать лучший для нас.
Вот наши кандидаты:
Кандидат | Конфигурация VPS | Заявленная | ≈ Цена в мес. |
Хостер 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
Визуализировав полученные значения, мы увидели следующее:
В тестах процессора лидирует Хостер 1, по диску же явный лидер — это Хостер 2. Также по графикам IOPS видно, что Хостер 1 и Хостер 3 очевидно ограничивают использование диска, т.к. для NVMe столь невысокие IOPS не характерны.
Итог
Лидерами нашего теста оказались: Хостер 1 по скорости CPU, и Хостер 2 по скорости диска.
Для себя мы выбрали Хостера 1, поскольку критерий скорости диска для нас вторичен, а цена на VPS у него существенно ниже. Справедливости ради стоит сказать, что ценовое предложение Хостера 2 также было весьма интересно, т.к. на его одноядерном VPS оперативной памяти было в два раза больше, чем у конкурентов.