Aller au contenu

Montée en charge d'un serveur


oxyd-x

Sujets conseillés

Bonjour tous le monde :)

quelqu'un connait-il un moyen (autre que de mettre en production) pour tester la charge d'un serveur (php/sql) ?

(par exemple pour tester 15/100 connexions secondes)

un logiciel, un site, ou meme un code php ;)

En fait, j'aimerais pouvoir tester en temps réel la réactivité de mon site suite à plusieurs morceaux de "code lourd" (php/mysql/sqlite/ecritures-lectures fichiers,...)

merci à tous ;)

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines plus tard...

Bonjour,

Deux outils permettant de mesurer les temps de traitement de requêtes sur un serveur Web ont été utilisés :

* Apache Bench (ab) : petit outil fourni dans la distribution d'Apache. Il permet de tester les performances de n'importe quel serveur en spécifiant un nombre de requêtes à envoyer sur le serveur avec un niveau de concurrence (simultanéité des requêtes). Si on ne précise pas de niveau de concurrence, l'outil envoie une requête, attend la réponse, envoie la suivante, attend la réponse, et ainsi de suite jusqu'à l'envoi de toutes les requêtes. Il faut également préciser l'URL du document sur lequel portent les requêtes.

* httperf: outil similaire à Apache Bench. Il faut préciser le nom du serveur, le nom du document, et le nombre de requêtes. Cet outil permet en plus de définir des sessions : chaque session correspond à un utilisateur et comprend un nombre de requêtes à lancer ainsi que le délai entre chaque requête. On définit aussi un taux de création des sessions à la seconde (plus d'infos ...).

L'avantage d'utiliser deux outils est de pouvoir comparer les mesures, et voir si les temps ne diffèrent pas d'un outil à l'autre pour un même test ce qui tendrait à faire penser qu'un des deux outils fournit des résultats faussés.

Exemples :

****

ab -n 1000 -c 1000 http://172.16.48.2/idfr/compteur.php

Cette commande signifie qu'on lance 1000 requêtes ( -n 1000 ), que le niveau de concurrence (simultanéité) est 1000 ( -c 1000 ), et que chaque requête porte sur le fichier situé à l'URL http://172.16.48.2/idfr/compteur.php . Cela correspond à 1000 clients simultanés opérant chacun une requête (on ouvre donc 1000 connexions sur le serveur). On peut également faire varier le nombre de requêtes simultanées : par exemple on peut lancer 1000 requêtes, avec un niveau de concurrence égal à 500. Dans ce cas, le programme de test (ab) s'assurera que le nombre de requêtes simultanées ne dépasse pas 500 au cours du test. Ces tests permettent de connaître la réaction du serveur face à une montée en charge, mais cette situation n'est pas très réelle (elle permet néanmoins de tester la robustesse du serveur) et il a été nécessaire de réaliser des tests permettant de simuler une situation ressemblant plus au comportement des utilisateurs, moins brusque et plus longue dans le temps.

****

httperf --wsess=225,50,0 --rate=150 --server=172.16.48.2 --uri=/idfr/compteur.php

Cette commande signifie qu'on lance 150 sessions à la seconde ( --rate=150 ), qu'il y a 225 sessions à lancer et que chaque session se compose de 50 requêtes " à la suite " ( 0 seconde entre deux requêtes ) ( --wsess=225,50,0 ) , et chaque requête porte sur le fichier /idfr/compteur.php situé sur le serveur 172.16.48.2 . Chaque session ouvre une connexion avec le serveur, et utilise cette même connexion pour envoyer ses requêtes et recevoir les réponses du serveur (notion de connexions persistantes). Le fait de fixer le taux de création des sessions à 150 signifie qu'on simule 150 utilisateurs arrivant sur le serveur par seconde. Par conséquent puisqu'on simule 225 clients, il faut moins de 2 secondes pour qu'ils aient tous commencé à effectuer leurs requêtes (donc on peut parler de clients simultanés).

Bon courage,

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...