Альтернативы ApacheBench для профилирования скорости моего кода

Я провел несколько экспериментов с использованием Apache Bench для профилирования времени отклика кода, и он не совсем генерирует правильные данные для меня. Надеюсь, у хороших людей есть идеи.

в частности, мне нужен инструмент, который

  • делает HTTP-запросы по сети (не нужно делать очень необычные)
  • записи время отклика как можно точнее (по крайней мере до нескольких миллисекунд)
  • пишет Время отклика данных файл без дальнейшей обработки (или предоставляет его в мой код, если библиотека)

Я знаю, о ab -e, который выводит данные в файл. Проблема в том, что это печатает только данные квантиля, что полезно, но не то, что мне нужно. The ab -g опция будет работать, за исключением того, что она не печатает субсекундные данные, то есть у меня нет необходимого разрешения.

Я написал несколько строк Python, чтобы сделать это, но httplib ужасно неэффективен, и поэтому результаты были бесполезны. В общем, мне нужна лучшая точность, чем может обеспечить чистый Python. Если у кого-то есть предложения для библиотеки, используемой из Python, я все уши.

мне нужно что-то, что является высокопроизводительным, повторяемым и надежным.

Я знаю, что половина моих ответов будет примерно такой: "задержка в интернете делает такие подробные измерения бессмысленными.- В моем конкретном случае это не так. Мне нужны детали с высоким разрешением. То, что на самом деле использовать мое оборудование HPET было бы потрясающе.

бросать голову из-за малого количества ответов и просмотров.

6 ответов


Я сделал это двумя способами.

с "loadrunner", который является прекрасным, но довольно дорогим продуктом (от Я думаю, HP в эти дни).

с комбинацией perl / php и пакетом Curl. Я нашел curl api немного проще в использовании из php. Его довольно легко свернуть свои собственные запросы GET и PUT. Я бы также рекомендовал вручную выполнить некоторые примеры запросов с Firefox и LiveHttpHeaders добавить на captute точный формат http-запросов, которые вы необходимость.


JMeter очень удобно. Он имеет GUI, из которого вы можете настроить свои запросы и threadpools, а также его можно запустить из командной строки.


Если вы можете кодировать на Java, вы можете посмотреть комбинацию JUnitPerf + HttpUnit.

минус в том, что вам придется делать больше вещей самостоятельно. Но ценой этого вы получите неограниченную гибкость и, возможно, большую точность, чем с инструментами GUI, не говоря уже о синтаксическом анализе HTML, выполнении JavaScript и т. д.

есть еще один проект под названием мясорубки который, кажется, предназначен для аналогичной задачи, но у меня нет опыт работы с ним.


хорошая ссылка на инструменты тестирования производительности opensource:http://www.opensourcetesting.org/performance.php

вы найдете описания и "самый популярный" список


httperf очень мощный.


Я использовал скрипт для привода 10 ящиков на одном коммутаторе для генерации нагрузки путем "воспроизведения" запросов на 1 сервер. У меня было время ответа веб-приложения (только сервер) на требуемую степень детализации, но меня не заботило время ответа клиенту. Я не уверен, что вы хотите включить поездку к и от клиента в свои расчеты, но если вы это сделали, это не должно быть трудно кодировать. Затем я обработал свой журнал скриптом, который извлекал время на url-адрес и делал разброс графики и графики трендов, основанные на нагрузке.

это удовлетворяло моим требованиям, которые были:

  • реальное распределение вызовов по различным URL-адресам.
  • трендовая производительность на основе нагрузки.
  • не влияет на веб-приложение, запустив другие интенсивные операции в том же окне.

Я сделал контроллер как сценарий оболочки, который сервер foreach запустил процесс в фоновом режиме, чтобы зациклить все URL-адреса в файле, вызывающем curl на каждом один. Я написал процессор журнала в Perl, так как в то время я делал больше Perl.