Comment puis-je relire les journaux d'accès Apache sur mes serveurs pour effectuer des tests de charge dans le monde réel?

13

J'ai regardé les outils pour tester les serveurs HTTP en charge? mais je ne pouvais pas voir comment rejouer mes propres journaux existants dans aucun de ces outils. J'ai un bogue qui ne se produit que sous certaines opérations de chargement que mes trucs de test JMeter et AB existants ne peuvent pas reproduire.

Je veux simplement donner à l'outil access_logs et le faire lire, plus rapidement ou à la même vitesse.

Stewart Robinson
la source

Réponses:

14

Vous pouvez utiliser le composant Access Log Sampler de Jmeter .

Il y a un court tutoriel sur son utilisation dans ce PDF .

Dan Carley
la source
3
J'ai essayé et évidemment je dois être un crétin parce que je ne pouvais pas le faire fonctionner correctement. J'ai fini par utiliser le script python sur insom.me.uk/z/2009/02/…
Stewart Robinson
Puisque le lien d'origine est mort, voici le lien dans archive.org: web.archive.org/web/20090305084634/https://www.insom.me.uk/…
Walty Yeung
Ok, au cas où d'autres trouveraient cela, ce script a un problème avec le filetage. On peut avoir besoin de remplacer threadlib par threadinglib ( stackoverflow.com/questions/19558401/… )
Walty Yeung
1

En supposant que tout ce que vous avez dans votre journal d'accès sont des demandes GET, et cela ne vous dérange pas que les demandes se regroupent à la limite de résolution des horodatages dans les journaux, environ 10 lignes de $ SCRIPTING_LANGUAGE devraient faire l'affaire. Les POST, les cookies, l'authentification HTTP et un timing plus subtil sont un exercice beaucoup plus intéressant.

womble
la source
-1

Cela nécessiterait un programme, tel qu'une application de test de charge, qui prend en charge la relecture du journal http. Une de ces applications est HTTPerf ( https://github.com/httperf/httperf ).

Un article pratique est disponible sur https://www.igvita.com/2008/09/30/load-testing-with-log-replay/

Barry G
la source
1
Ce serait une bien meilleure réponse si elle comprenait une explication réelle. Un simple lien vers un site Web externe est déconseillé ici, car les sites Web peuvent disparaître et disparaissent souvent.
Michael Hampton
-2

Je ferais quelque chose un peu différemment. Je comprends votre question, mais si vous cherchez à charger votre serveur, vous voudrez peut-être examiner l'outil «ab». Il est livré avec la plupart des installations d'apache. Fonctionnement:

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

Réalisera 1 000 demandes en faisant 15 demandes à la fois. Je sais que ce n'est pas exactement ce que vous recherchez, et cela ne demandera que l'adresse que vous lui donnez. Si vous avez besoin de charger, c'est un moyen rapide et simple de le faire, et cela vous donnera des statistiques potentiellement très utiles pour le débogage.

TrueDuality
la source
Si la question dit "J'ai un bogue que [...] les tests AB [...] ne peuvent pas reproduire", pourquoi suggéreriez-vous d'utiliser AB?
womble
J'ai raté AB répertorié dans les outils. : p J'aimerais dire que c'était un montage mais je ne suis honnêtement pas sûr moi-même.
TrueDuality
-2

Pourquoi ne développez-vous pas le vôtre? Obtenez le journal; analyser. Obtenez l'URI. Faites un appel en boucle. Vous pouvez écrire ceci en php et l'exécuter dans apache pour la concurrence.

Si vos journaux sont au format gz, faites un zcat, utilisez la fonction readlog. Cela donnera l'URL. Utilisez maintenant phpCurl pour frapper l'URL. Pour un débit plus élevé, exécutez-le dans apache (utilisez ab pour le charger).

Prashant R Kumar
la source
1
Ensuite, j'aurai deux applications pour charger le test. Ce serait tordu.
Stewart Robinson