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.

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 .


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.


-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/


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.


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).


1
Ensuite, j'aurai deux applications pour charger le test. Ce serait tordu.
Stewart Robinson
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.