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

13

Я смотрел на Инструменты для нагрузочного тестирования HTTP-серверов? но я не мог понять, как воспроизвести мои собственные существующие журналы в любом из этих инструментов. У меня есть ошибка, которая возникает только при определенных операциях загрузки, которые мои существующие тестирующие JMeter и AB не могут воспроизвести.

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

Стюарт Робинсон
источник

Ответы:

14

Вы можете использовать компонент Jmeter Access Log Sampler .

В этом PDF есть краткое руководство по его использованию .

Дэн Карли
источник
3
Я попробовал это, и, очевидно, я должен быть идиотом, потому что я не мог заставить его работать хорошо. Я закончил тем, что использовал скрипт на python на insom.me.uk/z/2009/02/…
Стюарт Робинсон,
Поскольку исходная ссылка не работает, вот ссылка на archive.org: web.archive.org/web/20090305084634/https://www.insom.me.uk/…
Уолти Йунг
Хорошо, в случае, если некоторые другие обнаружили это, у этого скрипта есть проблема с многопоточностью. Возможно, потребуется заменить threadlib на threadinglib ( stackoverflow.com/questions/19558401/… )
Уолти Йеунг,
1

Предполагая, что все, что у вас есть в вашем журнале доступа, это GET-запросы, и вы не возражаете против того, чтобы запросы группировались с пределом разрешения временных меток в журналах, около 10 строк $ SCRIPTING_LANGUAGE должны справиться с задачей. POST, cookie-файлы, HTTP-аутентификация и более точное определение времени - гораздо более интересное упражнение.

ombble
источник
-1

Для этого потребуется программа, такая как приложение нагрузочного тестирования, которая поддерживает воспроизведение журнала http. Одним из таких приложений является HTTPerf ( https://github.com/httperf/httperf ).

Статья с практическими рекомендациями находится по адресу https://www.igvita.com/2008/09/30/load-testing-with-log-replay/

Барри Г
источник
1
Это было бы намного лучшим ответом, если бы оно включало фактическое объяснение. Простая ссылка на внешний веб-сайт здесь не рекомендуется, так как веб-сайты могут и часто исчезают.
Майкл Хэмптон
-2

Я бы сделал что-то немного по-другому. Я понимаю ваш вопрос, но если вы смотрите на загрузку вашего сервера, вы можете обратиться к инструменту 'ab'. Он поставляется с большинством установок Apache. Бег:

ab -c 15 -n 1000 http://site.name/

Будет выполнять 1000 запросов, делая 15 запросов одновременно. Я знаю, что это не совсем то, что вы ищете, и это будет запрашивать только один адрес, который вы даете. Если вам нужна загрузка, это быстрый и простой способ сделать это, и он даст вам потенциально очень полезную статистику для отладки.

TrueDuality
источник
Если в вопросе написано «У меня есть ошибка, которую [...] AB-тестирование не может [...] воспроизвести», зачем вы предлагаете использовать AB?
Уомбл
Я пропустил AB, перечисленные в инструментах. : p Я хотел бы сказать, что это было редактирование, но я, честно говоря, сам не уверен.
TrueDuality
-2

Почему бы вам не разработать свой собственный? Получить журнал; разбери это. Получите URI. Сделайте звонок. Вы можете написать это в php и запустить его в apache для параллелизма.

Если ваши журналы находятся в формате gz, выполните zcat, используйте средство чтения журнала. Это даст URL. Теперь используйте phpCurl, чтобы попасть в URL. Для более высокой пропускной способности запустите его в apache (используйте ab для загрузки).

Прашант Р Кумар
источник
1
Тогда у меня будет два приложения для загрузки теста. Это было бы искажено.
Стюарт Робинсон