Test de montée en charge (benchmark) avec des logiciels libres
Cette article va vous présenter différentes solutions libres pour réaliser des tests de montée en charge, dit benchmark.
Cette idée m’est venu d’un commentaire que j’ai laissé sur le blog de Nicolargo concernant un article sur curl-loader
Mon commentaire énumérait différentes applications libres permettant de réaliser ces benchmarks et le suivi de la montée en charge.
J’ai donc décidé d’en faire un billet complet, j’avais déjà fait des billets sur Siège et Tsung
Les Applications libres de benchmarking :
Siege :
Donc pour rappel, Siege permet de faire des tests de montée en charge de vos appliactions web en simulant un grand nombre de connexions simultanées sur une ou plusieurs URLs données.
Siege rapporte le nombre totale de hits enregistrés, de bytes transférés, le temps de réponse, les accès concurrents et retourne le statut du serveur.
Siege supporte les protocoles HTTP/1.0 et 1.1, les méthodes GET & POST, les cookies, les transaction log, et l’authentification basique.
Tsung :
Tsung est un outils de test de performances permettant de réaliser des benchmark massif. Il est Multi-protocoles utilisant un système de plugin (HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP, SSL et XMPP/Jabber)
Et chose très importante, il permet de faire des scénarios. Les scénarios permette de simuler de la montée en charge mais non sur une seul url, mais via une succession d’action, par exemple, j’arrive sur la page d’accueil, je clique sur la catégorie « Administration », je choisi l’article « Test de montée en charge avec des logiciels libres ». L’activité de l’utilisateur et le taux d’arrivée peut être aléatoire en utilisant une notion de probabilité….
Ce qui est plus proche de la vie de ton application web qu’un nombre de requêtes simultanées sur une url.
JMeter :
Jmeter permet de simuler le comportement de plusieurs utilisateurs agissant de manière simultanée initialement sur une application Web.
Il est multi-protocole et peut désormais faire ses tests sur HTTP, HTTPS, SOAP, Database via JDBC, LDAP, JMS, POP3(S) and IMAP(S)
JMeter permet de faire des tests de performances, de robustesse, de charge et réalise des statistiques avec graphes à l’appui.
Très bonne ressource pour l’utilisation de JMeter
AB – Apache Benchmark :
Très simpliste, il permet de simuler x utilisateur sur une url donnée
Curl-Loader :
Permet de simuler x connections simultanées sur plusieurs urls en même temps.
Il supporte les protocole HTTP et FTP.
OpenSTA :
OpenSTA permet de faire des tests de montée en charge sur les protocole HTTP et HTTPS
Il a de gros inconvénients, d’abord il n’est disponible que pour la plate-forme Windows et est vraiment difficile à prendre en main.
CLIF Load Injection Framework :
Clif permet de faire des tests de performances d’applications web distribuées
Plusieurs injecteurs réparties (permet de simuler d’énormes charges) vont simuler des connections simultanées en mesurant les temps de réponse, des erreurs…
Des sondes déployées sur les serveurs hébergeant les applications à tester vont mesurer l’activité RAM, CPU, Disque…
Clif gère les scénarios et fonctionne en multi-protocole (TCP, UDP, TCP, DNS, HTTP(S), JDBC, JMS, DHCP, LDAP, SIP)
Voici un schema expliquant le fonctionnement de CLIF :
Selenium :
Selenium est une suite d’outils pour tester des applications Web.
Selenium dispose d’un Add-on pour Firefox qui va vous permettre de créer vos scénarios simplement en navigant sur l’application à tester, il y a un recorder qui enregistre votre navigation et il vous suffira de la rejouer x fois pour simuler une activité utilisateur réel.
C’est assez bluffant, on peut créer ses propres scénarios très facilement sans avoir à apprendre les commandes de l’application.
Selenium peut simuler via Selenium Remote Control (RC) différents navigateurs, plateformes et même language.
Selenium Grid va permettre de mettre en place une architecture distribuées pour réaliser des tests en parallèle.
Voici un schéma expliquant son fonctionnement :
Funkload :
Funkload permet également des faire des tests de performances
Il gère également les scénarios grace à TCPWatch
Funkload génére des rapports HTML/PDF avec graphes.
TestMaker :
TestMaker offrant une version opensource et une version entreprise, il permet également de faire des tests de montée en charge.
Je le donne pour information, mais je ne détaillerais pas ici ces fonctionnalités.
Httperf :
Httperf est également un outils pour mesurer les performances de vos applications HTTP(S)
Il peut être utilisé avec AutoBench et OpenLoad
Pour trouver une liste des solutions de tests opensource allez voir ce site :
La supervision de la charge des applications web :
Il est intéressant également de pouvoir jauger sur le long terme les temps de réponses de ses applications web via l’utilisation de scénarios également.
Il existe bien sur des solutions sur les solutions de supervision libres.
Cucumber-Nagios :
Cucumber-Nagios est un plugin Nagios qui permet de réaliser des scénarios de façon assez surprenant d’ailleurs.
Ceux-ci seront ensuite joués comme n’importe quel check Nagios et permettrons de suivre par exemple le temps de réponse.
Nagios-FR en parle, je vous laisse découvrir la façon de générer les scénarios avec Cucumber-Nagios
Site Officiel de Cucumber-Nagios
Zabbix :
La solution de supervision libre Zabbix comprennant gestion d’incident et de performance intégre par défaut une application permettant de réaliser des scénarios afin de tester des applications web et ainsi garder un historique des performances
Cette approche est très intéressante car combiné aux informations provenant de la supervision de base (charge CPU, RAM…) on pourra facilement identifié les sources de ralentissements.
Et vous vous utilisez quoi pour faire vos tests de montée en charge ?