Я настраиваю стек nginx и оптимизирую конфигурацию перед началом работы. Запустив ab на стресс-тестирование машины, я был разочарован тем, что скорость превысила 150 запросов в секунду, при этом значительное количество запросов возвращалось> 1 секунды. Как ни странно, сама машина даже не дышала.
Наконец-то я подумал проверить связь с окном и увидел время пинга около 100-125 мс. (Машина, к моему удивлению, находится по всей стране). Таким образом, кажется, что задержка сети доминирует в моем тестировании. Выполняю те же тесты с машины в той же сети, что и сервер (время пинга <1 мс), и я вижу> 5000 запросов в секунду, что больше соответствует тому, что я ожидал от машины.
Но это заставило меня задуматься: как определить и сообщить «реалистичный» показатель запросов в секунду для веб-сервера? Вы всегда видите заявления о производительности, но не следует ли учитывать задержку в сети? Конечно, я могу обслуживать 5000 запросов в секунду на машине рядом с сервером, но не на машине по всей стране. Если у меня много медленных соединений, они в конечном итоге скажутся на производительности моего сервера, верно? Или я думаю об этом все неправильно?
Простите, если это 101 сетевой проект. Я разработчик по профессии.
Обновление: отредактировано для ясности.
ab
имеет вариант параллелизма. Что вы установили? Кроме того, если вы проводите тестирование по внутреннему соединению ADSL, в тесте, скорее всего, будет преобладать ваша пропускная способность, и вы вообще не будете тестировать что-либо на сервере.Ответы:
Если вы заботитесь о производительности вашего сервера, когда к нему обращаются откуда-то в мире, попросите друга где-нибудь в мире (должен иметь хорошую пропускную способность) установить sproxy + siege на его linux box. Просто скачайте, настройте, сделайте. Эти инструменты маленькие, они компилируются за считанные секунды.
Прежде всего, начните
sproxy
с Linux. По умолчанию он будет работать через порт 9001 на локальном хосте (127.0.0.1). Если вы хотите получить к нему доступ извне, просто передайте ему исходящий IP-адрес в качестве параметра.Теперь подключитесь к sproxy, настроив свой браузер на использование этого ip и порта в качестве прокси для HTTP. Все, что вы делаете с этого момента, записывается sproxy и может быть воспроизведено позже. Теперь зайдите на ваш сайт, делайте то, что делали бы ваши клиенты, и пытайтесь делать «дорогие» вещи, которые используют ваш сервер.
Когда закончите, завершите sproxy, нажав CTRL ^ C. Он записал ваши действия в
$HOME/urls.txt
. Переместите файл туда, где находится осада. Чтобы начать стресс-тестирование, запуститеsiege -f urls.txt -d NUM -c NUM
.d
обозначает задержку между запросами, при выполнении тестов производительности используйте 1 (секунда).c
обозначает количество симулированных одновременных пользователей. Выбирай по желанию, но начинай с малого. Siege покажет вам количество транзакций в секунду, частоту появления ошибок, длительность выполнения запросов и т. Д. Это мощный и простой в использовании инструмент.Если вам нужна дополнительная информация о параметрах (их много), проверьте руководство по осаде и руководство по sproxy
Чтобы получить более реалистичные результаты, позвольте многим людям одновременно тестировать ваш сервер из разных стран и отправлять вам статистику.
источник
Реалистическое количество запросов в секунду должно быть взято из журналов доступа. IMO, задержка запроса не имеет ничего общего с нагрузкой на сервер, так как сервер обрабатывает все запросы с одинаковой скоростью независимо от их происхождения.
источник
Подумайте об использовании таких услуг, как Soasta Cloudtest . С его помощью вы можете получать довольно подробные отчеты о ваших тестах и запускать тесты производительности от различных поставщиков общедоступного облака / виртуализации. Вы можете настроить, как тяжело и как долго вы хотите забивать свои серверы. У них также есть бесплатная « облегченная » версия, чтобы вы могли увидеть, что она может сделать, прежде чем вносить какие-либо деньги.
источник