Maarch Professional Services 11, bd du Sud Est 92000 Nanterre Tel : +33 1 47 24 51 59 Fax : +33 1 47 24 54 08 Maarch Framework 3 - Maarch PS anime le développement d un produit d archivage open source : http://www.maarch.fr
Sommaire 1 APERÇU...3 2 PROTOCOLE...4 2.1 OUTIL DE TEST...4 2.2 CONFIGURATION SERVEUR...4 2.3 CONFIGURATION CLIENT...4 2.4 VOLUMÉTRIE...4 2.5 SCÉNARIO DE TEST...4 3 RÉSULTATS...6 3.1 IMPORT DE DOCUMENTS...6 3.2 CONSULTATION...7 3.2.1 Résultat général...7 3.2.2 Résultats pour les pages qui génèrent des requêtes SQL...8 4 LIMITES DU TEST...10 5 5 ANNEXES...11 5.1 5.1 LÉGENDE...11 Maarch PS Page : 2 / 11
1 APERÇU Maarch a eu a sa disposition une machine puissante et une configuration professionnelle pour réaliser des tests de performance («stress tests») en consultation et injection de masse. Les tests sur des machines de développement et ce que nous connaissions de Maarch en production nous poussaient à être confiants sur l issue de cette expérience, mais il était toujours intéressant d obtenir des métriques sur des environnements conséquents. Le client nous a prêté cet environnement sur une journée, 3 jours avant la bascule en production définitive, et sur une configuration «pré-prod» : base chargée à plus de 100 millions de documents, index positionnés, implémentation Maarch Framework recettée. Nous avions préparé au préalable un scénario de test de charge («stress test») en consultation, dont le protocole est décrit dans ce document. Par contre, les résultats sur l ingestion de masse sont directement issus des logs des batchs d ingestion après mise en production. Sur les deux fronts, les résultats sont très positifs : 2150 documents à la minute en versement de masse avec Maarch AutoImport ; 1.000 utilisateurs simultanés en consultation avec 95% des pages affichées en 0,7s Maarch PS Page : 3 / 11
2 PROTOCOLE 2.1 Outil de test Merci à nos amis de Nuxeo qui ont publié en Open Source l outil Funkload qui nous a permis de lancer ces tests de charge. 2.2 Configuration serveur 2x Intel Xeon E5420 @ 2.50GHz 8GB RAM Red Hat Enterprise Linux Server release 5.3 64 bits (Linux kernel 2.6.18, ext3fs) Apache HTTP Server 2.2.3 ORACLE 10.2.0.4 64 bits PHP 5.1.6 2.3 Configuration client Intel Core2 Duo T7300 @ 2.00GHz 2GB RAM Ubuntu 9.04 (Linux kernel 2.6.28, ext3fs) Python 2.6.2 2.4 Volumétrie Les volumétrie en jeu sont les suivantes : Base chargée à 100 millions de documents «réels» appartenant à quatre grandes familles : Contrats Factures Courriers Documents de gestion Liste de 20.000 n de contrats dans lequel le scénario pioche de façon aléatoire Page de détails pour un document contenant 15 propriétés En moyenne, une recherche renvoie 100 résultats (100 documents par contrat) 2.5 Scénario de test Dans ce protocole nous avons voulu simuler un utilisateur de type gestionnaire traitant des courriers ou des appels téléphoniques clients. Dans ce but, celui-ci lance des recherches sur l interface pour trouver tous les documents associés à un numéro de contrat. Il clique sur la première ligne de la liste de résultat pour afficher la page de propriété, reste au téléphone pendant quelque temps, puis lance une nouvelle recherche. On ne demande pas l affichage du contenu du document lui-même, qui dépend principalement du débit réseau. Maarch PS Page : 4 / 11
En détail le script d un test pris unitairement est le suivant : Maarch Framework 3 Affichage de la page de login Attente de 20s Connexion à l'application Répéter 10 fois : Affichage du formulaire de recherche Recherche sur n de contrat Attente de 22s Affichage de la page de propriété Attente de 1m et 55s Déconnexion de l'application Maarch PS Page : 5 / 11
3 RÉSULTATS 3.1 Import de documents Maarch AutoImport a injecté en moyenne 2150 documents par minute (130 000 documents par heure) dans l application (base de données et DocServer). Maarch PS Page : 6 / 11
3.2 Consultation 3.2.1 Résultat général Nombre de pages chargées CUs SPPS maxspps TOTAL SUCCESS ERROR 100 3.543 10.000 2126 2126 0.00% 1000 35.873 77.000 21524 21524 0.00% Temps de chargement CUs MIN AVG MAX P10 MED P90 P95 100 0.025 0.119 1.017 0.027 0.114 0.219 0.261 1000 0.024 0.257 2.310 0.037 0.200 0.532 0.714 Maarch PS Page : 7 / 11
3.2.2 Résultats pour les pages qui génèrent des requêtes SQL 3.2.2.1 Recherche de document Nombre de pages chargées CUs TOTAL SUCCESS ERROR 100 402 402 0.00% 1000 4267 4267 0.00% Temps de chargement CUs MIN AVG MAX P10 MED P90 P95 100 0.106 0.166 0.800 0.126 0.151 0.208 0.232 1000 0.111 0.308 1.629 0.152 0.221 0.588 0.782 Maarch PS Page : 8 / 11
3.2.2.2 Affichage de La fiche détail Nombre de pages récupérées CUs TOTAL SUCCESS ERROR 100 396 396 0.00% 1000 3969 3969 0.00% Temps de chargement CUs MIN AVG MAX P10 MED P90 P95 100 0.141 0.217 1.017 0.175 0.206 0.265 0.290 1000 0.141 0.419 1.784 0.225 0.318 0.755 1.042 Maarch PS Page : 9 / 11
4 LIMITES DU TEST Même si les résultats sont très positifs dans l'ensemble, nous n'avons pas pu pousser les tests plus loin et augmenter encore le nombre d'utilisateurs : les caractéristiques du client ne permettaient pas l'augmentation du nombre d'utilisateurs concourants (CPU et RAM insuffisante). la solution de test choisie ne permet pas de répartir les utilisateurs émulés sur plusieurs postes clients : la capacité du réseau devient un paramètre bloquant. Maarch PS Page : 10 / 11
5 ANNEXES 5.1 Légende CUs: Concurrent users or number of concurrent threads executing tests. Page: a request with redirects and ressource links (image, css, js) for an html page. SPPS: Successful pages per second. maxspps: Maximum SPPS during the cycle. MIN: Minimum response time for a page or request. AVG: Average response time for a page or request. MAX: Maximmum response time for a page or request. P10: Percentil 10 or response time where 10 percent of pages or requests are delivred. MED: Median or Percentil 50, response time where half of pages or requests are delivred. P90: Percentil 90 or response time where 90 percent of pages or requests are delivred. P95: Percentil 95 or response time where 95 percent of pages or requests are delivred. Maarch PS Page : 11 / 11