Я опишу, как мы решаем эту проблему, используя наш собственный инструмент LT под названием Yandex Tank Он может обрабатывать простой файл access.log, но только запросы «GET».Когда есть необходимость делать другие типы запросов, мы используем другие форматы боеприпасов (боеприпасы - это файл, содержащий все запросы, которые мы будем отправлять на наш сервер).Пример:
342
POST / HTTP/1.1^M
Host: xxx.xxx.xxx.xxx:8080^M
Connection: keep-alive^M
Keep-Alive: 300^M
Content-Type: multipart/form-data; boundary=AGHTUNG^M
Content-Length: 1400^M
Connection: Close^M
^M
--AGHTUNG^M
Content-Disposition: form-data; name="fp"; filename="fp_tank"^M
Content-Type: application/octet-stream^M
Content-Transfer-Encoding: binary^M
...
--AGHTUNG--^M
Число ('342') в первой строке соответствует размеру следующего запроса.Запрос в необработанном формате.Вы можете написать простой скрипт на вашем любимом языке, который генерирует такие файлы боеприпасов из вашего access.log, а затем использовать его для нагрузочного тестирования.
Такой формат боеприпасов делает его действительно гибким.Например, этот код генерирует боеприпасы из журналов FCGI (тела POST кодируются в Base64).Но, с другой стороны, вам нужно будет обрабатывать сессии вручную.