Замеры производительности web сервера
ApacheBench - Apache HTTP server benchmarking tool
В разработке web-сервисов наступает момент задержки при открытии страниц или выполнении операций. В такие момент возникают задачи по оптимизации работы приложения. Как оценить на сколько быстрее стала открываться та или иная страница?
Недавно, я для себя открыл простую утилиту ab
ab - это утилита для тестирования пропускной способности вашего HTTP сервера.
Установка
docker-compose.yml
benchmark:
build:
context: ./docker
container_name: benchmark
networks:
- my-network
Dockerfile
FROM alpine:latest
RUN apk add apache2-utils
Запуск
docker-compose run --rm benchmark ab -n 100 -d -r http://nginx/
nginx - имя контейнера nginx.
Параметры утилиты
ab [ -A auth-username:password ] [ -b windowsize ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -f protocol ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -r ] [ -s ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -u PUT-file ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [ -Z ciphersuite ] [http[s]://]hostname[:port]/path
- -n - количество запросов
- -c - количество одновременных запросов. По умолчанию 1 запрос за раз.
- -p - путь до файла, в котором содержатся данные для отправки формы
- -A - username:password для Basic аутентификации
- -t - лимит по времени
- -C cookie-name=value. Отправить куки.
Подробнее: https://httpd.apache.org/docs/2.2/programs/ab.html#options
Gitlab ci
Проверки производительности можно добавить в pipeline проекта.
Тестирование открытой части
open-part:
stage: benchmark
image: alpine:latest
before_script:
- apk add --no-cache curl apache2-utils
script:
- ab -n ${COUNT} -c 20 -d -r https://development.backloger.ru/ru/articles
variables:
COUNT: 100
only:
- dev
when: always
Тестирование закрытой части. Для этого можно передать cookie сессии или jwt.
close-part:
stage: benchmark
image: alpine:latest
before_script:
- apk add --no-cache curl apache2-utils
script:
- ab -n ${COUNT} -c 20 -d -r -C ${AUTH_COOKIE} https://development.backloger.ru/ru/control-panel
variables:
COUNT: 100
AUTH_COOKIE: PHPSESSID=483540d1da0657518dd8565e073c9881
only:
- dev
when: always
Вывод
- Document Length - размер полученного ответа.
- Concurrency Level - количество одновременных запросов.
- Time taken for tests - время от отправки первого запроса до получения последнего ответа.
- Complete requests - количество успешно обработанных запросов
- Failed requests - количество ошибочных запросов
- Total transferred - количество данных переданных по сети в байтах.
- HTML transferred - количество байтов документа, за исключением данных в заголовках.
- Requests per second - количество запросов в секунду.
- Time per request - среднее время на 1 запрос.
- Transfer rate - скорость передачи данных.
Авторизуйтесь, что бы оставить комментарий!