Может кто-нибудь объяснить, что означают эти результаты ApacheBench?

StackOverflow https://stackoverflow.com/questions/1417727

Вопрос

я пытаюсь понять, как использовать ApacheBench и протестировать свой сайт.Я установил проект сайта по умолчанию (это ASP.NET MVC, но, пожалуйста, не прекращайте чтение, если вы не являетесь пользователем .NET).

Я ничего не менял.Добавить новый проект.Установите конфигурацию RELEASE.Запуск без отладки.(так что это в режиме LIVE).Да, это со встроенным веб-сервером, а не с IIS или Apache промышленного уровня или чем-то еще.

Итак, вот результаты: -

C:\Temp>ab -n 1000 -c 1 http://localhost:50035/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        ASP.NET
Server Hostname:        localhost
Server Port:            50035

Document Path:          /
Document Length:        1204 bytes

Concurrency Level:      1
Time taken for tests:   2.371 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      1504000 bytes
HTML transferred:       1204000 bytes
Requests per second:    421.73 [#/sec] (mean)
Time per request:       2.371 [ms] (mean)
Time per request:       2.371 [ms] (mean, across all concurrent requests)
Transfer rate:          619.41 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.1      0      16
Processing:     0    2   5.5      0      16
Waiting:        0    2   5.1      0      16
Total:          0    2   5.6      0      16

Percentage of the requests served within a certain time (ms)
  50%      0
  66%      0
  75%      0
  80%      0
  90%     16
  95%     16
  98%     16
  99%     16
 100%     16 (longest request)

C:\Temp>

Теперь я не уверен, на что именно мне следует смотреть.

Во-первых, меня интересует количество запросов в секунду.Итак, если у нас есть требование обрабатывать 300 запросов в секунду, значит ли это, что оно обрабатывает в среднем 421 запрос в секунду?

Во-вторых, в чем причина добавления большего количества одновременных вычислений?Например, если у меня 1000 обращений в одном одновременном режиме, чем это отличается от 500 в двух одновременных?Нужно ли проверять, есть ли какой-либо код, блокирующий другие запросы?

И наконец, есть ли что-то важное, что я упустил из результатов и на что мне следует обратить внимание?

Спасибо :)

Это было полезно?

Решение

Какова причина добавления более параллельного?Например, если у меня есть 1000 ударов по 1 одновременному, как это отличается до 500 на 2 одновременном?Стоит ли тестировать если есть какой-либо код, который блокирует другие Meme it запросы?

Да, немного об этом:ваше приложение, вероятно, делает что-то, где параллелизм может вызвать проблемы.

Пара примеров:

  • страница пытается получить доступ к файлу – блокируя его в процессе;это означает, что если другая страница должна получить доступ к тому же файлу, ей придется подождать, пока первая страница не завершит работу с ним.
  • то же самое для доступа к базе данных:если одна страница пишет в базу данных, существует какой-то механизм блокировки (будь то таблица, строка или что-то еще, в зависимости от вашей СУБД)

Тестирование с одновременным параллелизмом в порядке...При условии, что на вашем сайте одновременно не будет более одного пользователя;что совсем не реально, я надеюсь для вас.


Вы должны подумать о том, сколько пользователей будет одновременно находиться на сайте, когда он находится в работе, и настроить параллелизм;просто помните, что 5 пользователей одновременно на вашем сайте не означают, что вам нужно тестировать с параллелизмом 5 с помощью ab :

  • реальные пользователи будут ждать пару секунд между каждым запросом (время прочитать страницу, нажать на ссылку,...)
  • Аб вообще не ждет:каждый раз, когда страница загружается (т.е. запрос завершается), она запускает другой запрос!


А еще две вещи:

  • ab тестирует только одну страницу — реальные пользователи будут перемещаться по всему веб-сайту, что может вызвать проблемы с параллелизмом, которых не возникло бы при тестировании только одной страницы.
  • ab загружает только одну страницу:он не запрашивает внешние ресурсы (например, CSS, изображения, JS,...);это означает, что у вас будет много других запросов, даже если они не очень дорогостоящие, когда ваш сайт будет работать.

В качестве примечания:возможно, вы захотите взглянуть на другие инструменты, которые могут выполнять гораздо более полные тесты, например осада, Джметр, или ОпенСТА :ab действительно удобен, когда вы хотите определить, оптимизирует ли то, что вы сделали, свою страницу или нет;но если вы хотите имитировать «реальное» использование вашего сайта, они гораздо более адаптированы.

Другие советы

Да, если вы хотите узнать, сколько запросов в секунду может обслуживать ваш сайт, посмотрите на & «Количество запросов в секунду &»; линия. В вашем случае это действительно довольно просто, так как вы выполняли ab с параллелизмом 1. Каждый запрос в среднем занимал всего 2,337 мс. 421 из них, один за другим, занимают 1 секунду.

Вам действительно нужно немного поиграть с параллелизмом, чтобы точно оценить емкость вашего сайта. До определенной степени параллелизма можно было ожидать увеличения пропускной способности, поскольку IIS параллельно обрабатывает несколько запросов. Например. если ваш сервер имеет несколько процессоров / ядер. Также, если страница зависит от внешнего ввода-вывода (служба среднего уровня или вызовы БД), процессор может работать по одному запросу, в то время как другой ожидает завершения ввода-вывода. В определенный момент количество запросов / сек будет нивелироваться с увеличением параллелизма, и вы увидите увеличение задержки. Увеличьте параллелизм еще больше, и вы увидите снижение пропускной способности (req / sec), поскольку сервер должен выделять больше ресурсов для манипулирования всеми этими параллельными запросами.

При этом большинство ваших запросов возвращаются примерно через 2 мс. Это чертовски быстро, поэтому я предполагаю, что с точки зрения вызовов БД или промежуточного уровня не так уж много происходит, и ваша система, вероятно, загружена процессором, если тест выполняется (или что-то не так, и очень быстро дает сбой. вы уверены, что ab получает страницу ответа, на которую вы намереваетесь? В связи с этим возникает еще один момент: ab сам по себе потребляет процессор, особенно если вы используете параллелизм Итак, вы хотите запустить ab на другой машине.

Кроме того, если ваш сайт выполняет внешние вызовы службам среднего уровня или БД, вы хотите настроить ваш machine.config для оптимизации количества потоков, выделяемых IIS: http://support.microsoft.com/default.aspx?scid=kb;en-us;821268

И просто небольшая мелочь: статистика по времени выполняется с шагом ~ 16 мс, поскольку это похоже на гранулярность используемого таймера. То есть 80% ваших ответов не заняли 0 мс, они заняли некоторое время & Lt; 16 мс.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top