J'ai fait des expériences à l'aide d'Apache Bench pour profiler mes temps de réponse de code, et cela ne génère pas tout à fait le bon type de données pour moi. J'espère que les bonnes personnes ici ont des idées. P>
Spécifiquement, j'ai besoin d'un outil P>
Je sais sur J'ai écrit quelques lignes de python pour le faire, mais le HTTplib est horriblement inefficace et les résultats étaient donc inutiles. En général, j'ai besoin de meilleure précision que le python pur risque de fournir. Si quelqu'un a des suggestions pour une bibliothèque utilisable de Python, je suis toutes les oreilles. P>
J'ai besoin de quelque chose qui est haute performance, reproductible et fiable. P>
Je sais que la moitié mes réponses vont être dans le sens de "la latence Internet rend ce type de mesures détaillées sans signification." Dans mon cas d'utilisation en particulier, ce n'est pas vrai. J'ai besoin de détails de synchronisation haute résolution. Quelque chose qui a utilisé réellement mon matériel HPET serait génial. P>
jeter une génération ici à cause du faible nombre de réponses et de vues. P> AB -E code>, qui imprime les données dans un fichier. Le problème est que cela imprime uniquement les données quantites, utiles, mais pas ce dont j'ai besoin. L'option
AB -G code> fonctionnerait, sauf qu'il n'imprime pas les données sous-seconde, ce qui signifie que je n'ai pas la résolution dont j'ai besoin. P>
6 Réponses :
Je l'ai fait de deux manières. P>
avec "loadrunner" qui est un produit merveilleux mais assez cher (de je pense que HP ces jours-ci). P>
avec combinaison Perl / PHP et le package CURL. J'ai trouvé l'API Curl légèrement plus facile à utiliser à partir de PHP. C'est assez facile de rouler votre propre get et de mettre des demandes. Je vous recommande également de courir manuellement sur certaines recherches d'échantillons avec Firefox et les LiveHTTPHeaders ajoutent d'attribuer le format exact des demandes HTTP dont vous avez besoin. P>
LoadRunner ressemble à un excellent logiciel. Certainement hors de mon budget (et de surkill - je fais principalement des statistiques ici). En fait, je n'ai besoin que de faire des demandes de tête, mais l'idée d'utiliser Curl comme une bibliothèque semble être une bonne.
Savez-vous si CURL peut être convaincu de faire du timing pour des sessions conservées?
Juste un suivi ici - Curl (libcurl à Python, en fait) a fourni une grande mine d'informations directement liées aux points que je voulais enquêter. Je suppose que construire mes propres outils pour mon propre problème est la bonne réponse parfois. En tant que bonus, libcurl est beaucoup plus efficace que tout code de réseau que je pourrais vous écrire.
JMeter est assez pratique. Il dispose d'une interface graphique à partir de laquelle vous pouvez configurer vos demandes et votre threadpools et il peut également être exécuté à partir de la ligne de commande. P>
Cela ressemble à un outil pratique. Un peu trop chers pour ce dont j'ai besoin ici, mais je garderai à l'esprit pour d'autres projets. Quelle est la précision? Mon inquiétude avec des outils plus importants, comme celui-ci, c'est que l'interface graphique et toutes les "autres choses" peuvent ajouter du bruit à mes résultats (accordé, je cherche des résultats plus précis que la plupart des outils de référence Web sont conçus pour fournir).
En ce qui concerne la précision - effectuez un test avec Apachebench (ou tout ce que vous avez confiance) et une autre avec JMeter. Si votre serveur est cohérent performance-sage, vous devez obtenir des résultats proches des deux courses. De cette façon, vous pouvez vous assurer qu'il y ait une au-dessus de l'interface graphique.
@mindas J'ai besoin de précision beaucoup plus grande qu'un test comme celui-ci révélera.
Eh bien, dans ce cas, vous voudrez peut-être modifier votre question et expliquer pourquoi et quelle précision vous avez besoin (et pourquoi vous faites confiance à Apachebench - si vous le faites).
Si vous pouvez coder en Java, vous pouvez consulter la combinaison de Junitperf + httpunit < / a>. p>
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 une plus grande précision que par des outils d'interface graphique, sans parler de l'analyse HTML, de l'exécution JavaScript, etc. P>
Il y a aussi un autre projet appelé broyeur qui semble être intentionné pour une tâche similaire, mais je n'ai pas toute expérience avec elle. p>
Ouais ... mais je n'ai pas besoin d'analyse HTML, JavaScript, etc. Je dois juste avoir besoin du temps qu'il faut pour une demande de quitter ma machine et pour que je puisse obtenir le début d'une demande de tête. Junitperf est probablement un niveau plus élevé que nécessaire, mais je vais y jeter un coup d'œil.
J'ai regardé le moulin. Il semble être plus proche de ce que je cherche, mais j'ai encore des inefficiences qui m'inquiètent. Par exemple, "httpClient envoie un message comme deux PDU ... Ceci est une conséquence de la mise en œuvre conservatrice de la pipeline HTTP / 1.1 dans httpclient."
Une bonne référence d'outils d'essai de performation openSource: http://www.opensourceestest.org/performance.php p>
Vous trouverez des descriptions et une liste "la plus populaire" p>
J'ai utilisé un script pour conduire 10 boîtes sur le même commutateur pour générer une charge par "Rejouer" Demandes à 1 serveur. J'ai eu mon application Web Logging Time de réponse (Server uniquement) à la granularité dont j'avais besoin, mais je me suis préoccupé par le temps de réponse au client. Je ne suis pas sûr de vous soucier d'inclure le voyage vers et depuis le client dans vos calculs, mais si vous le faites, il ne faut pas être difficile à décoder. J'ai ensuite traité mon journal avec un script qui a extraité les temps par URL et distinguez des graphiques de tracé et des graphiques de tendance basés sur la charge. p>
Ceci satisfait mes exigences qui étaient: p>
Je l'ai fait contrôleur en tant que script shell que Forach Server a démarré un processus en arrière-plan pour boucler sur toutes les URL d'un fichier appelant CURL sur chacun. J'ai écrit le processeur de journal à Perl depuis que je faisais plus de Perl à cette époque. P>
J'ai fini par construire un outil personnalisé pour prendre mes mesures en utilisant une combinaison de python et de libcurl. Libcurl fournit des mesures de synchronisation de bonnes résolutions pour chaque partie du processus de demande / réponse HTTP, ce qui me permet d'obtenir les mesures précises dont j'avais besoin.