spipzine

Accueil > Pas demain la veille > Spipomètre > SPIP 192a : performance comparée à SPIP 1.7.2

SPIP 192a : performance comparée à SPIP 1.7.2

étude de cas

jeudi 5 avril 2007, par cedric

En résumé

SPIP 1.9.2 accélère fortement le service des pages déjà en cache par rapport à SPIP 1.7.2.
En revanche la phase de calcul d’une page à partir du squelette déjà compilé est sensiblement dégradée par rapport à SPIP 1.7.2.

Conditions d’essai

Serveur Dédié Dedibox Gentoo 2006
Apache 2.0.55
MySql 4.1.20
PHP/5.1.4-pl0-gentoo with Hardening-Patch

Méthodologie

Moyen de mesure

On mesure le temps de service des pages html par SPIP à l’aide de l’utilitaire apache ab2 sur 100 requêtes consécutives. La mesure est faite directement depuis la machine qui sert les sites de tests pour éviter toute latence due au réseau.

On retient principalement la valeur médiane du temps de service des pages.

Cas de référence

Le site initial en SPIP 1.7.2 est remonté tel quel sans changement sur le serveur de test. Le squelette repose sur EVA version 2.0.

Une copie complète du site est réalisée (IMG, squelettes et base mysql) et passée en 1.9.2a. Aucune modification de squelette n’est faite, à part quelques corrections syntaxes de boucles erronées qui étaient tolérées par SPIP 1.7.2 et sont refusées par le compilateur de SPIP 1.9.2a.

Dans ce cas, chaque service de page html inclut son calcul.

Cas test 1

On active le cache sur les deux versions du site (le cache initial était à zéro).

Dans ce cas, chaque service de page html ne consiste qu’à ressortir la page du cache et exécuter le php présent dans le squelette.

Cas test 2

On procède au nettoyage complet du php contenu dans les squelettes pour le site en version 1.9.2a. Ce nettoyage est rendu possible par l’utilisation des balises non ambigues qui permettent de référencer des #ID_RUBRIQUE d’une boucle supérieure, et par l’utilisation de #SET et #GET pour les cas les plus complexes.
Le cache est gardé actif.

Dans ce cas, chaque service de page html ne consiste qu’à ressortir la page du cache directement au format html.
Ce cas ne peut être testé en version 1.7.2.

Synthèse des résultats

On compare ici le temps de service de la page d’accueil. Une augmentation du temps correspond à une dégradation des performances. Une réduction du temps correspond à une amélioration des performances.

Comparaison des performances médianes
TestsSPIP 1.7.2SPIP 1.9.2aEcart de temps
Cas de référence
Squelette original, cache=0, beaucoup de PHP dans les squelettes
180ms 236ms +31%
Cas test 1
Squelette original, activation du cache
114ms 46ms -60%
Cas test 2
Squelette nettoyé, sans PHP
41ms

En l’absence de cache, les performances de service des pages html par SPIP chutent de 30% environ lors du passage de la 1.7.2 à la 1.9.2

En revanche, quand le cache est activé, les performances sont améliorées de 60% entre les deux versions de SPIP.

SPIP 1.9.2 accélère donc fortement le service des pages déjà en cache par rapport à SPIP 1.7.2..

En revanche la phase de calcul de la page html à partir du squelette compilé a été dégradée sensiblement par rapport à SPIIP 1.7.2.

Le nettoyage du php et son remplacement par des balises SPIP n’apportent qu’un gain de 12% environ sur le service de la page par SPIP 1.9.2.

Ces résultats ne reflètent pas forcément tous les cas d’utilisation de SPIP, et ne concernent qu’une topologie serveur dédié.

Ils pourraient être assez différents sur un serveur mutualisé utilisant un filer et un serveur de base de donnée, mais ce genre de configuration accroît normalement le bénéfice de l’utilisation du cache.

Ce test est toutefois intéressant dans la mesure ou il concerne un cas concret d’un site utilisé en production, basé sur un squelette EVA assez répandu (EVA 2.0), et maintenu par un webmestre non expert. Il est donc à ce titre assez représentatif d’un usage typique de SPIP.


Résultats complets

Réference 1.7.2

ab2 -n100 http://xxx/ bergerac/eva/
This is ApacheBench, Version 2.0.41-dev <$Revision : 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
 
Benchmarking xxx (be patient).....done
 
Server Software : Apache
Server Hostname : xxx
Server Port : 80
 
Document Path : / bergerac/eva/
Document Length : 20786 bytes
 
Concurrency Level : 1
Time taken for tests : 18.267390 seconds
Complete requests : 100
Failed requests : 0
Write errors : 0
Total transferred : 2100900 bytes
HTML transferred : 2078600 bytes
Requests per second : 5.47 [#/sec] (mean)
Time per request : 182.674 [ms] (mean)
Time per request : 182.674 [ms] (mean, across all concurrent requests)
Transfer rate : 112.28 [Kbytes/sec] received
 
Connection Times (ms)
min mean[+/-sd] median max
Connect : 0 0 0.0 0 0
Processing : 174 182 7.5 180 230
Waiting : 149 156 6.0 155 205
Total : 174 182 7.5 180 230
 
Percentage of the requests served within a certain time (ms)
50% 180
66% 183
75% 184
80% 185
90% 186
95% 189
98% 226
99% 230
100% 230 (longest request)

Réference 1.9.2

ab2 -n100 http://xxx/ bergerac/V192_brute/sommaire.php3
This is ApacheBench, Version 2.0.41-dev <$Revision : 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
 
Benchmarking xxx (be patient).....done
 
Server Software : Apache
Server Hostname : xxx
Server Port : 80
 
Document Path : / bergerac/V192_brute/sommaire.php3
Document Length : 15409 bytes
 
Concurrency Level : 1
Time taken for tests : 24.568493 seconds
Complete requests : 100
Failed requests : 0
Write errors : 0
Total transferred : 1576000 bytes
HTML transferred : 1540900 bytes
Requests per second : 4.07 [#/sec] (mean)
Time per request : 245.685 [ms] (mean)
Time per request : 245.685 [ms] (mean, across all concurrent requests)
Transfer rate : 62.64 [Kbytes/sec] received
 
Connection Times (ms)
min mean[+/-sd] median max
Connect : 0 0 0.0 0 0
Processing : 229 245 30.8 236 487
Waiting : 209 224 29.9 216 466
Total : 229 245 30.8 236 487
 
Percentage of the requests served within a certain time (ms)
50% 236
66% 241
75% 243
80% 244
90% 255
95% 304
98% 332
99% 487
100% 487 (longest request)

Cas test 1 (cache activé) 1.7.2

ab2 -n100 http://xxx/ bergerac/eva/sommaire.php3
This is ApacheBench, Version 2.0.41-dev <$Revision : 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
 
Benchmarking xxx (be patient).....done
 
Server Software : Apache
Server Hostname : xxx
Server Port : 80
 
Document Path : / bergerac/eva/sommaire.php3
Document Length : 20784 bytes
 
Concurrency Level : 1
Time taken for tests : 11.439815 seconds
Complete requests : 100
Failed requests : 0
Write errors : 0
Total transferred : 2109300 bytes
HTML transferred : 2078400 bytes
Requests per second : 8.74 [#/sec] (mean)
Time per request : 114.398 [ms] (mean)
Time per request : 114.398 [ms] (mean, across all concurrent requests)
Transfer rate : 179.99 [Kbytes/sec] received
 
Connection Times (ms)
min mean[+/-sd] median max
Connect : 0 0 0.0 0 0
Processing : 99 113 9.6 114 153
Waiting : 0 24 4.2 25 30
Total : 99 113 9.6 114 153
 
Percentage of the requests served within a certain time (ms)
50% 114
66% 117
75% 119
80% 119
90% 124
95% 132
98% 145
99% 153
100% 153 (longest request)

Cas test 1 (cache activé) 1.9.2a

ab2 -n100 http://xxx/ bergerac/V192_brute/spip.php?page=sommaire
This is ApacheBench, Version 2.0.41-dev <$Revision : 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
 
Benchmarking xxx (be patient).....done
 
Server Software : Apache
Server Hostname : xxx
Server Port : 80
 
Document Path : / bergerac/V192_brute/spip.php ?page=sommaire
Document Length : 14917 bytes
 
Concurrency Level : 1
Time taken for tests : 4.953334 seconds
Complete requests : 100
Failed requests : 0
Write errors : 0
Total transferred : 1527100 bytes
HTML transferred : 1491700 bytes
Requests per second : 20.19 [#/sec] (mean)
Time per request : 49.533 [ms] (mean)
Time per request : 49.533 [ms] (mean, across all concurrent requests)
Transfer rate : 301.01 [Kbytes/sec] received
 
Connection Times (ms)
min mean[+/-sd] median max
Connect : 0 0 0.0 0 0
Processing : 43 48 18.9 46 185
Waiting : 12 45 17.6 44 173
Total : 43 48 18.9 46 185
 
Percentage of the requests served within a certain time (ms)
50% 46
66% 47
75% 48
80% 48
90% 48
95% 50
98% 174
99% 185
100% 185 (longest request)

Cas test 2 (cache activé, squelettes sans php) 1.9.2a

ab2 -n100 http://xxx/ bergerac/
This is ApacheBench, Version 2.0.41-dev <$Revision : 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
 
Benchmarking xxx (be patient).....done
 
Server Software : Apache
Server Hostname : xxx
Server Port : 80
 
Document Path : / bergerac/
Document Length : 14526 bytes
 
Concurrency Level : 1
Time taken for tests : 4.275586 seconds
Complete requests : 100
Failed requests : 0
Write errors : 0
Total transferred : 1488000 bytes
HTML transferred : 1452600 bytes
Requests per second : 23.39 [#/sec] (mean)
Time per request : 42.756 [ms] (mean)
Time per request : 42.756 [ms] (mean, across all concurrent requests)
Transfer rate : 339.84 [Kbytes/sec] received
 
Connection Times (ms)
min mean[+/-sd] median max
Connect : 0 0 0.0 0 0
Processing : 39 42 13.3 41 172
Waiting : 35 39 8.0 39 115
Total : 39 42 13.3 41 172
 
Percentage of the requests served within a certain time (ms)
50% 41
66% 41
75% 41
80% 41
90% 42
95% 43
98% 59
99% 172
100% 172 (longest request)

Messages