Wie kann ich Apache-Zugriffsprotokolle auf meinen Servern wiedergeben, um Tests unter realen Bedingungen durchzuführen?

13

Ich habe mir Tools zum Testen von HTTP-Servern angeschaut . Ich konnte jedoch nicht sehen, wie ich meine eigenen vorhandenen Protokolle in einem dieser Tools wiedergeben konnte. Ich habe einen Fehler, der nur unter bestimmten Ladeoperationen auftritt, die meine vorhandenen JMeter- und AB-Tests nicht reproduzieren können.

Ich möchte dem Tool einfach access_logs geben und sie entweder schneller oder mit der gleichen Geschwindigkeit wiedergeben lassen.

Stewart Robinson
quelle

Antworten:

14

Sie können die Access Log Sampler- Komponente von Jmeter verwenden .

Es gibt ein kurzes Tutorial zur Verwendung in diesem PDF .

Dan Carley
quelle
3
Ich habe es versucht und offensichtlich muss ich ein Idiot sein, weil ich es nicht zum Laufen bringen konnte. Am Ende habe
Stewart Robinson
Da der ursprüngliche Link tot ist, ist hier der Link in archive.org: web.archive.org/web/20090305084634/https://www.insom.me.uk/…
Walty Yeung
Ok, falls andere dies fanden, hat dieses Skript ein Problem mit dem Threading. Möglicherweise muss threadlib durch threadinglib ersetzt werden ( stackoverflow.com/questions/19558401/… )
Walty Yeung
1

Angenommen, alles, was Sie in Ihrem Zugriffsprotokoll haben, sind GET-Anforderungen, und es macht Ihnen nichts aus, wenn die Anforderungen an der Auflösungsgrenze der Zeitstempel in den Protokollen zusammengefasst werden. Etwa 10 Zeilen von $ SCRIPTING_LANGUAGE sollten dies tun. POSTs, Cookies, HTTP-Authentifizierung und subtileres Timing sind weitaus interessanter.

womble
quelle
-1

Dies würde ein Programm erfordern, z. B. eine Auslastungstest-App, die die Wiedergabe von http-Protokollen unterstützt. Eine solche App ist HTTPerf ( https://github.com/httperf/httperf ).

Ein Artikel mit Anleitungen finden Sie unter https://www.igvita.com/2008/09/30/load-testing-with-log-replay/

Barry G
quelle
1
Dies wäre eine viel bessere Antwort, wenn es eine tatsächliche Erklärung enthalten würde. Von der einfachen Verknüpfung mit einer externen Website wird hier abgeraten, da Websites verschwinden können und oft verschwinden.
Michael Hampton
-2

Ich würde etwas anders machen. Ich verstehe Ihre Frage, aber wenn Sie versuchen, Ihren Server zu laden, sollten Sie sich das Tool 'ab' ansehen. Es kommt mit den meisten Installationen von Apache. Laufen:

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

Führt 1000 Anfragen mit jeweils 15 Anfragen aus. Ich weiß, dass dies nicht genau das ist, wonach Sie suchen, und dies wird nur die eine Adresse abfragen, die Sie ihm geben. Wenn Sie etwas laden müssen, ist dies ein schneller und einfacher Weg, und Sie erhalten einige potenziell sehr nützliche Statistiken für das Debuggen.

TrueDuality
quelle
Wenn die Frage lautet "Ich habe einen Fehler, den [...] AB-Tests nicht reproduzieren können", warum schlagen Sie dann die Verwendung von AB vor?
womble
Ich habe AB in den Tools verpasst. : p Ich würde gerne sagen, dass es eine Bearbeitung war, aber ich bin mir ehrlich gesagt nicht sicher.
TrueDuality
-2

Warum entwickelst du nicht deine eigene? Hole das Protokoll. Analysiere es. Holen Sie sich die URI. Machen Sie einen Curl-Anruf. Sie können dies in PHP schreiben und es in Apache für Parallelität ausführen.

Wenn Ihre Protokolle im gz-Format vorliegen, führen Sie eine zcat durch, und verwenden Sie die readlog-Funktion. Das wird URL geben. Verwenden Sie nun phpCurl, um die URL zu treffen. Führen Sie es für einen höheren Durchsatz in Apache aus (verwenden Sie ab, um es zu laden).

Prashant R Kumar
quelle
1
Dann muss ich zwei Anwendungen testen. Das wäre verdreht.
Stewart Robinson