Нагрузочное тестирование сайта на Drupal

Russian

AB (Apache Benchmark) - тест производительности сервера

Начнем ,пожалуй, с самого простого теста.

AB - это утилита для тестирования производительности вашего веб-сервера Apache. Она создана для того, чтобы вы могли определить производительность вашей текущей настройки Apache. В первую очередь, AB показывает сколько запросов в секунду ваш Apache способен обслужить.

Для установки данного пакета выполните следующую команду:

# aptitude install apache2-utils

Работа с утилитой

  1. ab -n 1000 http://name:80/index.php
  1. Benchmarking name (be patient)
  2. Completed 100 requests
  3. Completed 200 requests
  4. Completed 300 requests
  5. Completed 400 requests
  6. Completed 500 requests
  7. Completed 600 requests
  8. Completed 700 requests
  9. Completed 800 requests
  10. Completed 900 requests
  11. Completed 1000 requests
  12. Finished 1000 requests

Далее более подробный отчет

  1. Server Software: Apache/2.2.22
  2. Server Hostname: name
  3. Server Port: 80
  4.  
  5. Document Path: /index.php
  6. Document Length: 91994 bytes
  7.  
  8. Concurrency Level: 1
  9. Time taken for tests: 40.748 seconds
  10. Complete requests: 1000
  11. Failed requests: 0
  12. Write errors: 0
  13. Total transferred: 92434000 bytes
  14. HTML transferred: 91994000 bytes
  15. Requests per second: 24.54 [#/sec] (mean)
  16. Time per request: 40.748 [ms] (mean)
  17. Time per request: 40.748 [ms] (mean, across all concurrent requests)
  18. Transfer rate: 2215.28 [Kbytes/sec] received

Как видно:

  1. Concurrency Level: количество одновременно-отправляемых запросов — 1;
  2. Time taken for tests: тысяча запросов к серверу заняла 40.748 секунд;
  3. Complete requests: успешно получен ответов на всю тысячу запросов;
  4. Failed requests: неудавшихся запросов — ноль;
  5. Write errors: ошибок записи — ноль;
  6. Total transferred: общий объём переданных данных: 92434000 байт;
  7. HTML transferred: из них «полезного» HTML — 91994000 байт;
  8. Requests per second: среднее количество запросов в секунду составило 24.54
  9. Time per request: среднее время на один запрос 40.748 миллисекунды
  10. Transfer rate: скорость обмена данными с сервером составила 2215.28 килобайта в секунду.

Далее в выводе идёт информация о времени, затраченном на сетевые подключения:

  1. Connection Times (ms)
  2. min mean[+/-sd] median max
  3. Connect: 0 0 0.0 0 0
  4. Processing: 24 41 7.2 40 63
  5. Waiting: 23 38 7.1 38 60
  6. Total: 24 41 7.2 40 63

И на обслуживание запросов сервером:

  1. Percentage of the requests served within a certain time (ms)
  2. 50% 40
  3. 66% 43
  4. 75% 46
  5. 80% 47
  6. 90% 50
  7. 95% 53
  8. 98% 56
  9. 99% 58
  10. 100% 63 (longest request)

Как видно сервер успешно справился с 1000-ю запросов.

Некоторые полезные параметры

  1. -c concurrency - количество параллельных запросов в единицу времени. По умолчанию, один реквест в единицу времени (можно считать, что в секунду).
  2. -С cookie-name=value - добавлять куки. Задается в виде пары имя=значение. Это поле можно повторять.
  3. -f protocol - задает SSL/TLS протокол (SSL2, SSL3, TLS1, or ALL).
  4. -h - отобразить краткую справку по параметрам
  5. -k - включить KeepAlive, то есть осуществлять множество запросов в течение одной HTTP-сессии. По умолчанию данная возможность отключена.
  6. -n requests - количество запросов, которое необходимо выполнить в течение сессии тестирования. По умолчанию, выполняется только один запрос, что не дает общей картины.
  7. -q - подавляет вывод некоторых сообщений о процессе тестирования.
  8. -t timelimit - максимальное количество секунд, которое необходимо затратить на тестирование. Это подразумевает значание параметра -n равное 50000. По умолчанию временной лимит не установлен.
  9. -v verbosity - устанавливает уровень "разговорчивости": 4 и выше отображает информацию о заголовках, 3 и выше - информацию о кодах ответа (404, 200 и т. д.), 2 и выше - выводить предупреждения и прочую информацию.

Попробуем с новыми параметрами
Давайте теперь посмотрим, как сервер поведёт себя, если вся эта тысяча запросов будет направлена к нему одновременно, указав это при помощи опции '-c':
ab  -n 1000 -c1000  http://name.com/index.php

  1. Completed 100 requests
  2. Completed 200 requests
  3. Completed 300 requests
  4. Completed 400 requests
  5. Completed 500 requests
  6. Completed 600 requests
  7. Completed 700 requests
  8. Completed 800 requests
  9. apr_socket_recv: Connection reset by peer (104)
  10. Total of 805 requests completed

Здесь тест не смог быть завершён по причине того, что после одновременной отправки 805 запросов сервер перестал принимать входящие соединения. Опытным путём, снижая количество одновременных запросов, было установлено что безболезненно мой Apache в текущей конфигурации может обрабатывать примерно 300 одновременных не Keep-Alive запросов.

Естественно, с Keep-Alive запросами дело будет обстоять ещё хуже, поскольку занимаемые Apache'м ресурсы сервера освобождаются не так быстро. Для выполнения теста с Keep-Alive-соединениями просто добавьте опцию '-k':

ab  -n1000 -c1000 -k  http://name.com/index.php

  1. Benchmarking asd.com (be patient)
  2. Completed 100 requests
  3. Completed 200 requests
  4. Completed 300 requests
  5. apr_socket_recv: Connection reset by peer (104)
  6. Total of 340 requests completed

Отредактировав параметры нашего вебсервера мы можем добиться большей производительности сервера

Также возможно оформлять данные теста в файл и писать все в виде html - таблицы
ab  -n1000 -c1000 -k -w  http://name.com/index.php > ab.html

Категория: 
The code has been tested and works
Мультитег: 

Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Target Image