8 votes

Alternatives to ApacheBench for profiling my code speed

J'ai fait quelques expériences en utilisant Apache Bench pour profiler les temps de réponse de mon code, et cela ne génère pas tout à fait le type de données dont j'ai besoin. J'espère que les bonnes personnes ici ont des idées.

Plus précisément, j'ai besoin d'un outil qui

  • Effectue des requêtes HTTP via le réseau (il n'a pas besoin de faire quelque chose de très élaboré)
  • Enregistre les temps de réponse le plus précisément possible (au moins à quelques millisecondes près)
  • Écrit les données de temps de réponse dans un fichier sans autre traitement (ou les fournit à mon code, s'il s'agit d'une bibliothèque)

Je connais ab -e, qui imprime les données dans un fichier. Le problème est que cela n'imprime que les données quantiles, ce qui est utile, mais pas ce dont j'ai besoin. L'option ab -g fonctionnerait, sauf qu'elle n'imprime pas les données inférieures à la seconde, ce qui signifie que je n'ai pas la résolution dont j'ai besoin.

J'ai écrit quelques lignes de code en Python pour le faire, mais httplib est horriblement inefficace et donc les résultats étaient inutiles. En général, j'ai besoin d'une meilleure précision que ce que Python pur est susceptible de fournir. Si quelqu'un a des suggestions pour une bibliothèque utilisable depuis Python, je suis tout ouïe.

J'ai besoin de quelque chose qui soit performant, reproductible et fiable.

Je sais que la moitié de mes réponses vont être du genre "la latence internet rend ce type de mesures détaillées sans intérêt." Dans mon cas d'utilisation particulier, ce n'est pas vrai. J'ai besoin de détails de synchronisation haute résolution. Quelque chose qui utilise vraiment mon matériel HPET serait génial.

Je mets une prime ici en raison du faible nombre de réponses et de vues.

1voto

James Anderson Points 18253

J'ai fait ça de deux façons.

Avec "loadrunner" qui est un produit merveilleux mais assez cher (je pense que c'est de HP de nos jours).

Avec la combinaison perl/php et le paquetage Curl. J'ai trouvé l'API CURL légèrement plus facile à utiliser à partir de php. Il est assez facile de créer vos propres requêtes GET et PUT. Je recommanderais également d'exécuter manuellement quelques requêtes d'exemple avec Firefox et l'extension LiveHttpHeaders pour capturer le format exact des requêtes http dont vous avez besoin.

1voto

user149102 Points 11

JMeter est assez pratique. Il dispose d'une interface graphique à partir de laquelle vous pouvez configurer vos requêtes et vos threadpools et peut également être exécuté en ligne de commande.

1voto

mindas Points 14217

Si vous savez coder en Java, vous pouvez regarder la combinaison de JUnitPerf + HttpUnit.

L'inconvénient est que vous devrez faire plus de choses vous-même. Mais au prix de cela, vous obtiendrez une flexibilité illimitée et probablement une précision supérieure à celle des outils GUI, sans parler de l'analyse HTML, de l'exécution JavaScript, etc.

Il y a aussi un autre projet appelé Grinder qui semble être destiné à une tâche similaire mais je n'ai pas d'expérience avec celui-ci.

1voto

Carles Barrobés Points 5283

Une bonne référence d'outils de test de performance open source : http://www.opensourcetesting.org/performance.php

Vous y trouverez des descriptions et une liste des "plus populaires"

1voto

Pascal Points 181

httperf est très puissant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X