Auteur:


Date:
15/02/2010

Catégories:
Open-source
Reseau
Web

Tags:




Simuler des connexions HTTP/FTP simultanées

Curl-Loader est un logiciel libre, écrit en langage C (le meilleur langage pour développer des applications réseaux), permettant de simuler sur votre serveur WEB ou FTP un grand nombre de connexions simultanées. Nous allons dans ce billet voir comment installer, configurer et tester ce logiciel dans un environnement GNU/Linux (Ubuntu 9.10 dans mon cas).

Installation de Curl-Loader

Comme il n'est pas encore (des volontaires ?) disponible dans les dêpots officiels, il va falloir compiler Curl-Loader à la main. Avant d'aller plus loin, on installe des pré-requis système:

On commence par récupérer la dernière version disponible (0.51 au moment de l'écriture de ce billet):

On décompresse et compile le tout:

On finalise l'installation avec:

Configuration de Curl-Loader

Tout est centralisé dans un fichier de configuration. Quelques exemples de fichiers de conf sont fournis avec les sources dans le répertoire ./conf-exemples/.

Le plus simple est de partir du fichier ./conf-exemples/bulk.conf:

On édite le fichier pour l'adapter à son besoin (documentation exhaustive disponible sur le site officiel) :

Utilisation de Curl-Loader

Attention à ne lancer Curl_Loader que vers un serveur qui vous appartient.
Dans le cas contraire, cela peut être considéré comme une attaque par dénie de service !

Il ne reste plus qu'a lancer Curl-Loader avec ce fichier de configuration:

Que va faire l'exécution de Curl-Loader avec notre fichier de configuration ?

On commence un cycle en envoyant sur le réseau 5 (CLIENTS_RAMPUP_INC) requêtes simultanées vers le serveur Web d'URL http://www.monserveurweb.com/(URL), puis 1 seconde plus tard, 5 requêtes de plus et ainsi de suite jusqu'à 200 (CLIENTS_NUM_MAX) requêtes simultanées. A la fin de ce cycle, on continu jusqu'à attendre le 100em cycle (CYCLES_NUM).

A la fin du test on a les informations suivantes qui s'affichent:

Pour la le lecture des rapports, voici un petit mémento:

  • CAPS=call attempts per seconds;
  • run-time in seconds;
  • requests num;
  • 1xx success num;
  • 2xx success num;
  • 3xx redirects num;
  • client 4xx errors num;
  • server 5xx errors num;
  • other errors num, like resolving, tcp-connect, server closing or empty responses number (Err);
  • url completion time expiration errors (T-Err);
  • average application server Delay (msec), estimated as the time between HTTP request and HTTP response without taking into the account network latency (RTT) (D);
  • average application server Delay for 2xx (success) HTTP-responses, as above, but only for 2xx responses. The motivation for that is that 3xx redirections and 5xx server errors/rejects may not necessarily provide a true indication of a testing server working functionality (D-2xx);
  • throughput in, batch average, Bytes/sec (T-In);
  • throughput out, batch average, Bytes/sec (T-Out);
  • Ed

    Sinon juste pour du http ya l’excellentissime apachebench (ab pour les intimes)

  • Ulrich VACHON

    Salut,
    Il existe JMeter en Java qui te permet de bombarder aussi de la sorte, mais avec un recorder de navigation en prime.

    Ulrich

  • Mael

    langage C (le meilleur langage pour développer des applications réseaux) –> Jean GABES est en train de nous démontrer le contraire …

  • http://blog.admin-linux.org/ Pierre-Yves

    Bien le bonjour,
    ab est quand même super limité pour faire des tests de montée en charge et ne permet pas de simuler une activité élevée, mais normal d’un groupe d’utilisateur.
    Pour faire du benchmark, il y a deux solutions intéressantes dont j’avais parlé sur mon blog :
    Siege – http://www.joedog.org/index/siege-home
    Tsung – http://tsung.erlang-projects.org/
    Il y a aussi OpenSta, mais qui ne fonctionne que sous windows, et est très compliqué à comprendre, pas du tout intuitif.
    Mais en gros, ils permettent de réaliser des scénarios, ce qui est pour moi plus qu’important ;)
    Tsung est pour moi celui qui offre le plus de possibilité, et travaille sur le plus de protocoles ;) Et en plus c’est Français ;)
    Pour compléter un peu cela, il est possible de surveiller sur le long terme via ses outils de supervisions et des scénarios l’état de charge de ses applications web.
    Avec Zabbix, c’est inclus par défaut, il est possible de créer des scénarios web, ça supporte l’authentification, et ça remonte les temps de réponses à chaque étapes.
    Avec Nagios, il existe le concombre ;) Cucumber-Nagios : http://www.nagios-fr.org/2009/11/cucumber-nagios/
    Voilà, c’était juste pour info, au cas où quelqu’un ne connaissait pas ces infos ;)
    Mais en tout cas, merci pour l’info, je ne connaissais pas curl-loader ;)
    Bonne journée

    PS : J’ai mis ton article sur le reddit logiciels_libres
    http://www.reddit.com/r/logiciels_libres/

  • Pingback: Test de montée en charge (benchmark) avec des logiciels libres | L'admin sous GNU / Linux - Blog Libre

  • Pingback: yuanying » Blog Archive » curl loader