Pull to refresh

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

Reading time 3 min
Views 2.1K
Усиленно подбираю себе VDS — задумался над вопросом сравнения производительности.

Цель данной статьи — попытка найти критерий, по которому можно сравнить VDS от различных провайдеров и выбрать объективно наиболее удачную по сочетанию цена/качество. Возможно, изложенные в статье методы не являются достоверными, но как отправная точка — вполне достаточно.


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

С одной стороны есть, например, бенчмарк «ubench», который довольно неплохо, пусть и суррогатно, меряет мощность в попугаях. Следует оговориться, что в случае VDS все такие тестеры не совсем корректны, но при наличии достаточной статистики ситуация вырисовывается довольно близкая к реальной.

Однако я подумал воспользоваться еще одним способом. Есть CMS, которая генерирует некоторые страницы сайта n секунд. Я написал коротенький скрипт, который запрашивает 10 одинаковых страниц с разных хостов, и затем обрабатывает результат. Здесь самое интересное — лично я не вполне уверен в правильности и адекватности методики, поэтому приведу исходники скриптов:

Скрипт disp.php — туннель для AJAX, я решил не париться с кросдоменным AJAX'ом :)

<? print file_get_contents($_SERVER["QUERY_STRING"]) * 1000; ?>

Скрипт exec.php — запускает основной скрипт CMS, эмулируя обращение, измеряет время обращения и выводит его

<?

$time = microtime(1);
// эмуляция обычного HTTP запроса
file_get_contents("http://{$_SERVER["HTTP_HOST"]}/АДРЕС");
print microtime(1) - $time;

?>


Собственно, самый главный скрипт находится по адресу test.osmio.ru/disp.html — весь код на JavaScript, исходники открыты.

Лично я вижу несколько потенциально «скользких» мест:
  1. Если один скрипт еще не отработал, а новый запрос уже пришел — сервер начинает грузиться сильнее, но от этого спасет галочка синхронных запросов
  2. Скрипт не измеряет полное время запроса, хотя, возможно, следовало бы — все сервера отвечают с разной задержкой… Но я сознательно не включил это в расчет, т.к. каналы между серверами могут идти как угодно, в том числе и через Европу — и такое бывает, что два соседних ДЦ в Мск гоняют траф окольными путями.
  3. HTTP запрос в exec.php — несмотря на то, что он идет на тот же хост

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

Конфигурации у серверов следующие:
  • vds-dbbb.1gb.ru — 1GB.ru, 500MHz, 384MB, OpenVZ, Gentoo
  • cms.dis.dj — Infobox.ru, 333MHz, 512MB, HyperV, Debian5
  • 89.188.123.24 — Ruweb.net, 2000MHz, 1536MB, VDSManager, FreeBSD6

У меня замерились следующие значения:
Хост Среднее Отклонение Мин Макс 0 1 2 3 4 5 6 7 8 9
vds-dbbb.1gb.ru 156 44 (28%) 128 282 136 138 131 282 137 134 134 133 144 128
cms.dis.dj 1294 60 (5%) 1234 1462 1275 1291 1279 1259 1234 1462 1282 1269 1262 1316
89.188.123.24 441 15 (3%) 417 460 451 420 452 456 445 460 417 445 420 443

Я еще раз повторяю, что методология не факт, что адекватная действительности, но некоторые выводы я все же сделаю:
  • 1GB нехило колбасит, хотя значения, в основном, минимальные
  • Infobox безбожно тормозит — там послабже процессор и принципиально другая технология виртуализации, но не настолько же
  • Ruweb очень стабилен и примерно между 1GB и ISPServer

Результаты тестов ubench:
  • Infobox
    Ubench CPU: 27692
    Ubench MEM: 19291
    Ubench AVG: 23491
  • 1GB
    Ubench CPU: 55762
    Ubench MEM: 44521
    Ubench AVG: 50141
  • Ruweb — по цифрам машина зло, но она и должна быть мощнее, заявленные характеристики на голову выше остальных
    Ubench CPU: 600191
    Ubench MEM: 269780
    Ubench AVG: 434985

Выводы — не такая и слабая VDSка у Infobox, даже несмотря на меньшую частоту — она вполне конкурирует с ISPServer. Однако время генерации заметно большее. Я полагаю, что это связано с настройками софта. Здесь следует заметить, что везде, кроме 1GB стоит ISPManager с настроенными по-умолчанию Apache, PHP5 и т.д. Также следует заметить, что есть определенная корреляция между значениями ubench и тем, что намерил мой тестер.

UPD. У ISPServer кончился тестовый период, и т.к. его результат был не особо хорошим при довольно внушительной цене за хостинг — из расчета я его исключил.
Tags:
Hubs:
+2
Comments 18
Comments Comments 18

Articles