Vсем Pо Sерверу или масштабное тестирование VPS

в 18:26, , рубрики: Apache, joomla 3.0, vds, vps, администрирование linux-систем, провайдеры, Серверное администрирование, хостинг, метки: , , , , ,

Сам я уже давно не пользуюсь услугами отечественных хостинг-провайдеров и для собственных нужд арендую сервер в Германии. И одним замечательным утром я решил проверить насколько качественны те услуги, которые нам предлагают российские хостинг-провайдеры и для этого было решено отобрать несколько отечественных VPS, установить на них необходимое ПО, тестовый сайт и провести масштабное нагрузочное тестирование.

Для тестирования были рандомным способом отобраны 7 отечественных хостинг-провайдеров, предоставляющие услуги тестового периода для VPS (VDS), чем я не мог не воспользоваться в своих благих целях. Стоимость VPS варьируется от 500 до 700 рублей и относятся к бюджетному сегменту. Итак, наши претенденты:

image

Методология тестирования:

Метод тестирования прост — с удаленного сервера отправляем тонны запросов на WEB сервер и смотрим, как ведет себя VPS. Можно сказать, что это небольшой DDos.
В качестве атакующего я использовал свой арендованный сервер в Германии в следующей конфигурации:

  • Intel i7 2600 Quad-Core + Hyper-Threading;
  • 32 Гб ОЗУ;
  • 1 Гбит канал.

На всех тестируемых VPS установлена ОС – Debian 7 x64. В тех случаях, где хостер не поддерживает данную ОС используется другая ОС, о чем указано выше в описании претендентов.
Основное установленное ПО на VPS (Debian 7):

  • Apache 2.2.22;
  • PHP 5.4;
  • MySQL 5.5.

Основное установленное ПО на VPS (Debian6):

  • Apache 2.2.16;
  • PHP 5.3;
  • MySQL 5.1.

Чтобы получить максимально точные результаты всем VPS были созданы идентичные условия: все ПО я устанавливал самостоятельно. WEB сервера работают на голом Апаче (NGINX и прочие приятности не устанавливались), все конфиги по дефолту. На все VPS была установлена Joomla 3.1.5 с демо данными блога. В качестве ПО для самого теста использовался Apache Benchmark версии 2.3.

Для каждого VPS тестирование проводилось в 3 этапа:

  1. Первый этап – 30 потоков и 500 запросов.
  2. Второй этап – 50 потоков и 1 000 запросов.
  3. Третий этап – 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, который также успешно справился со своей задачей:

Неудачные запросы Кол-во запросов в сек. Время выполнения 1 запроса Время выполнения всех запросов Время соединения Общее время
0 10.1 99.1 мс. 2981 мс. 827 — 5373 мс. 49.5 сек.

Следующий претендент – infobox:

Неудачные запросы Кол-во запросов в сек. Время выполнения 1 запроса Время выполнения всех запросов Время соединения Общее время
0 3.4 291.7 мс. 8750 мс. 1524 — 10142 мс. 145.8 сек.

Следом в деле себя показал хостинг от It-mcp:

Неудачные запросы Кол-во запросов в сек. Время выполнения 1 запроса Время выполнения всех запросов Время соединения Общее время
0 2.3 436.4 мс. 13091 мс. 2662 — 15462 мс. 218 сек.

Предпоследний кандидат – Fozzy:

Неудачные запросы Кол-во запросов в сек. Время выполнения 1 запроса Время выполнения всех запросов Время соединения Общее время
0 5.3 189.5 мс. 5685 мс. 1304 — 7210 мс. 94.7сек.

И завершает первый этап тестирования VDS24.net:

Неудачные запросы Кол-во запросов в сек. Время выполнения 1 запроса Время выполнения всех запросов Время соединения Общее время
0 10.4 96.5 мс. 2895 мс. 919 — 4941 мс. 48.3 сек.

Подведем первый промежуточный итог:
Все VPS, кроме 1gb, справились с заданием, поэтому 1gb выбывает из дальнейших тестов. Лидером по скорости, после первого этапа, является VDS24, на втором месте VPS от Agava. Переходим к раунду 2.

Второй раунд: 50 потоков и 1000 запросов.

Timeweb:

Неудачные запросы Кол-во запросов в сек. Время выполнения 1 запроса Время выполнения всех запросов Время соединения Общее время
449 4.6 218.4 мс. 10919.5 мс. 538 — 38114 мс. 218.4 сек.

Во втором раунде Timeweb не смог справиться с задачей и смог обработать только чуть больше половины запросов.
image
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 запросами.
Итоговая таблица выглядит так:

  1. Agava
  2. Несмотря на провал в последнем тесте, второе место я отдаю VDS24
  3. Fozzy
  4. Infobox
  5. It-mcp
  6. Timeweb
  7. 1gb

Для эксперимента была сделана попытка проверить возможности еще не выпавших из гонки VPS. Им в нагрузку было отправлено 300 потоков и 50 000 запросов. Скажу сразу, что никто с такой нагрузкой так и не справился.

Конечно мы смогли протестировать далеко не все VPS, которые есть на рынке, также скорость работы и отказоустойчивость можно значительно повысить грамотной настройкой VPS, но потенциал был хорошо прослежен в данном тесте. Как выяснилось далеко не всегда производительность упирается в мегагерцы и объемы ОЗУ.

Ознакомиться со сводной таблицей результатов тестирования можно здесь.

Автор: yuri-it

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js