Сам я уже давно не пользуюсь услугами отечественных хостинг-провайдеров и для собственных нужд арендую сервер в Германии. И одним замечательным утром я решил проверить насколько качественны те услуги, которые нам предлагают российские хостинг-провайдеры и для этого было решено отобрать несколько отечественных VPS, установить на них необходимое ПО, тестовый сайт и провести масштабное нагрузочное тестирование.
Для тестирования были рандомным способом отобраны 7 отечественных хостинг-провайдеров, предоставляющие услуги тестового периода для VPS (VDS), чем я не мог не воспользоваться в своих благих целях. Стоимость VPS варьируется от 500 до 700 рублей и относятся к бюджетному сегменту. Итак, наши претенденты:
Методология тестирования:
Метод тестирования прост — с удаленного сервера отправляем тонны запросов на WEB сервер и смотрим, как ведет себя VPS. Можно сказать, что это небольшой DDos.
В качестве атакующего я использовал свой арендованный сервер в Германии в следующей конфигурации:
Intel i7 2600 Quad-Core + Hyper-Threading;
32 Гб ОЗУ;
1 Гбит канал.
На всех тестируемых VPS установлена ОС – Debian 7 x64. В тех случаях, где хостер не поддерживает данную ОС используется другая ОС, о чем указано выше в описании претендентов.
Основное установленное ПО на VPS (Debian 7):
Чтобы получить максимально точные результаты всем VPS были созданы идентичные условия: все ПО я устанавливал самостоятельно. WEB сервера работают на голом Апаче (NGINX и прочие приятности не устанавливались), все конфиги по дефолту. На все VPS была установлена Joomla 3.1.5 с демо данными блога. В качестве ПО для самого теста использовался Apache Benchmark версии 2.3.
Для каждого VPS тестирование проводилось в 3 этапа:
Первый этап – 30 потоков и 500 запросов.
Второй этап – 50 потоков и 1 000 запросов.
Третий этап – 100 потоков и 10 000 запросов.
Количество потоков можно приравнять к посетителям сайта, а количество запросов к запросам от этих посетителей к WEB серверу VPS.
Например, первый этап можно представить, как 30 пользователей на сайте одновременно и в общей сложности сделали 500 запросов WEB серверу.
Каждый этап прогонялся 3 раза и в качестве результирующих использовались средние значения из результатов теста.
В таблице учитывались основные, на мой взгляд, параметры:
Неудачные запросы (Failed requests) – количество запросов, которые VPS не смог обработать.
Количество запросов в секунду (Requests per second) – тут все ясно из названия, чем больше запросов в секунду обрабатывает WEB сервер, тем выше его скорость работы.
Время выполнения 1 запроса (...across all concurrent requests) – чем меньше данное значение, тем быстрее WEB сервер обрабатывает запросы и тем выше общая скорость работы.
Время выполнения всех запросов (Time per request) – общее время на обработку всех отправленных на WEB сервер запросов. Чем меньше значение, тем лучше.
Время соединения (Connection Times) – состоит из
a. Строка Connect: — время, которое потратила утилита на соединение с сервером.
b. Строка Processing: — время выполнения запроса.
c. Строка Waiting: — время простоя запроса. То есть время, которое запрос ждал своей очереди для выполнения.
d. Строка Total — Общее время.
В качестве результирующих данных я привожу итоговые значения строки Total. Первое значение указано минимальное, второе — максимальное. Параметр показывает, за какое время выполнился самый медленный и самый быстрый запрос. Чем меньше эти показатели, тем сервер быстрее обрабатывает запросы.
Общее время на тест (Time taken for tests) – зачастую совпадает с общим временем обработки всех запросов. Чем меньше значение, тем лучше.
В тесте не дается оценка таким характеристикам, как дисковая подсистема, объем внешнего канала, стоимость и качество доп.услуг.
Тестирование:
Первый раунд: 30 поток и 500 запросов.
И в первом же тесте VPS от 1gb.ru не смог обработать даже 100 запросов. С чем это связано сказать сложно, у меня не было цели разбираться о причинах столь фатального выступления данного претендента, поэтому идем дальше.
Следующий претендент от Timeweb показал себя намного лучше и без особых усилий справился с задачей, обработав все отправленные на его WEB сервер запросы:
Неудачные запросы
Кол-во запросов в сек.
Время выполнения 1 запроса
Время выполнения всех запросов
Время соединения
Общее время
0
6.2
161.3 мс.
4758 мс.
1616 — 8988 мс.
79.6 сек.
Далее «атаке» подвергся VPS от Agava, который также успешно справился со своей задачей:
Подведем первый промежуточный итог:
Все VPS, кроме 1gb, справились с заданием, поэтому 1gb выбывает из дальнейших тестов. Лидером по скорости, после первого этапа, является VDS24, на втором месте VPS от Agava. Переходим к раунду 2.
Второй раунд: 50 потоков и 1000 запросов.
Timeweb:
Неудачные запросы
Кол-во запросов в сек.
Время выполнения 1 запроса
Время выполнения всех запросов
Время соединения
Общее время
449
4.6
218.4 мс.
10919.5 мс.
538 — 38114 мс.
218.4 сек.
Во втором раунде Timeweb не смог справиться с задачей и смог обработать только чуть больше половины запросов.
Agava:
Неудачные запросы
Кол-во запросов в сек.
Время выполнения 1 запроса
Время выполнения всех запросов
Время соединения
Общее время
0
7.6
131.5 мс.
6574.7 мс.
635 — 9781 мс.
131.5 сек.
Infobox:
Неудачные запросы
Кол-во запросов в сек.
Время выполнения 1 запроса
Время выполнения всех запросов
Время соединения
Общее время
0
3.4
291.3 мс.
14563.8 мс.
2018 — 16325 мс.
291.3 сек.
It-mcp:
Неудачные запросы
Кол-во запросов в сек.
Время выполнения 1 запроса
Время выполнения всех запросов
Время соединения
Общее время
0
2.3
436.6 мс.
21827.7 мс.
2548 — 24240 мс.
436.6 сек.
Fozzy:
Неудачные запросы
Кол-во запросов в сек.
Время выполнения 1 запроса
Время выполнения всех запросов
Время соединения
Общее время
0
5.5
182.7 мс.
9133.7 мс.
1620 — 11103 мс.
182.7 сек.
VDS24:
Неудачные запросы
Кол-во запросов в сек.
Время выполнения 1 запроса
Время выполнения всех запросов
Время соединения
Общее время
0
9.6
104 мс.
5202.3 мс.
987 — 10296 мс.
104 сек.
По результатам второго этапа тестирования по-прежнему с небольшим отрывом лидирует VDS24, ему в спину дышит Agava. В хвосте списка плетется It-mcp.
Третий раунд: 100 потоков и 10000 запросов.
Timeweb:
В третьем раунде у Timeweb при всех 3 попытках намертво падал MySQL и Apache выдавал невеселое сообщение: Error displaying the error page: Application Instantiation Error. Тестируемый сайт оживал только после рестрата MySQL. На третьем этапе VPS от Timeweb пополняет ряды отстающих, вкупе с 1gb.
Agava:
Неудачные запросы
Кол-во запросов в сек.
Время выполнения 1 запроса
Время выполнения всех запросов
Время соединения
Общее время
0
7.6
125.8 мс.
12576 мс.
606 — 15627 мс.
1257.6 сек.
Infobox:
Неудачные запросы
Кол-во запросов в сек.
Время выполнения 1 запроса
Время выполнения всех запросов
Время соединения
Общее время
0
3.4
292.2 мс.
29216.5 мс.
1576 — 35362 мс.
2921.6 сек.
It-mcp:
Неудачные запросы
Кол-во запросов в сек.
Время выполнения 1 запроса
Время выполнения всех запросов
Время соединения
Общее время
0
2.3
4396.1 мс.
43961.3 мс.
2683 — 81978 мс.
4396.1 сек.
Fozzy:
Неудачные запросы
Кол-во запросов в сек.
Время выполнения 1 запроса
Время выполнения всех запросов
Время соединения
Общее время
0
5.2
1910.3 мс.
19103.4 мс.
1488 — 23609 мс.
1910.3 сек.
VDS24:
Мы подошли к нашему лидеру первых двух этапов. И тут нас постигает разочарование. VDS24 при всех трех попытках намертво зависал, сумев обработать лишь чуть более 2000 запросов.
На этом третий этап тестирования завершен.
Итоги:
Победителем нашего тестирования, продемонстрировавшим весьма неплохую скорость работы и отказоустойчивость, объявлен VPS от Agava.
Аутсайдером нашего теста, конечно же, стал VPS от 1gb, который смог справиться лишь с 10 потоками и 50 запросами.
Итоговая таблица выглядит так:
Agava
Несмотря на провал в последнем тесте, второе место я отдаю VDS24
Fozzy
Infobox
It-mcp
Timeweb
1gb
Для эксперимента была сделана попытка проверить возможности еще не выпавших из гонки VPS. Им в нагрузку было отправлено 300 потоков и 50 000 запросов. Скажу сразу, что никто с такой нагрузкой так и не справился.
Конечно мы смогли протестировать далеко не все VPS, которые есть на рынке, также скорость работы и отказоустойчивость можно значительно повысить грамотной настройкой VPS, но потенциал был хорошо прослежен в данном тесте. Как выяснилось далеко не всегда производительность упирается в мегагерцы и объемы ОЗУ.
Ознакомиться со сводной таблицей результатов тестирования можно здесь.