Le 08/03/2011 13:18,
Luxpopuli Open source a écrit :
Bonjour Nicolas,
Merci pour ta réponse.
J'ai trouvé également cette page concernant les
scripts Perl: http://modperlbook.org/html/11-1-Setting-the-MaxClients-Directive.html
Et ici, un calcul d'estimation pour déterminer la
valeur: http://www.devside.net/articles/apache-performance-tuning
A propos de ab, peux-tu me donner un peu plus d'info
sur le test qui permet de mettre en évidence la
différence de ressource entre des ressources statiques
et du php ?
Pascal
Le 7 mars 2011 14:57,
FROIDURE Nicolas
<froidure_nicolas@yahoo.fr>
a écrit :
Le 06/03/2011 16:41, Luxpopuli Open source
a écrit :
Bonjour,
On lit de partout, à commencer dans la
doc, que la valeur par défaut (256) de la
directive MaxClients de Apache est
suffisante dans la plupart des cas.
Comme je ne trouve pas cette valeur
particulièrement élevée, je voudrais
savoir s'il y a un moyen d'évaluer (d'une
façon ou d'une autre) ce que cela
représente en terme de visites ou de pages
vues ou je ne sais quoi ?
Si j'ai bien compris 256 c'est le nombre
max de processus fils simultanés = nombre
max de connexions simultanées ? (un
processus ne gère qu'une connexion (il
meurt à la fin de la connexion) alors
qu'une connexion peut gérer MaxRequestsPerChild
requêtes) Oui/Non ?
Taille des processus
Quelles sont les techniques de calcul de
la taille des processus pour déterminer la
valeur de MaxClients et donc la quantité
de RAM que doit avoir le serveur ?
Pascal
Slt,
En ce qui concerne la taille des
processus, cela dépend du nombre de modules
Apaches chargés en mémoire + la taille
éventuelle de la mémoire utilisé par ton
language de programmation côté serveur.
C'est d'ailleurs le principal problème car
pour des ressources statiques, une valeur de
256 est probablement supportable par de
nombreuses confs matérielles, mais dès lors
que ce sont des scripts qui font appel à la
base/utilisent bcp de mémoire, ça change la
donne.
J'ai lu qqpart : 1-2Mo pour une ressource
statique et 8Mo pour un script PHP en moyenne,
après, à toi de définir le ratio entre
processus php/res statiques. Si tu veux
optimiser, vire les modules qui ne te servent
pas en t'aidant de la doc, ça te permettra de
mieux les connaître par la même occasion.
Et sinon, dans le dossier bin d'apache, tu
as ab (apache benchmark) qui te permet
d'effectuer un grand nombre de requêtes
simultanées. Tu pourra constater l'énorme
différence entre des ressources statiques et
du php.
Bonne semaine.
--
Cordialement, Nicolas Froidure, gérant, Elitwork SARL.
Slt,
Merci pour tes liens, j'y ai aussi appris des trucs.
Pour te donner un exemple sur un serveur local de test
avec 512mo de ram et un AMD 2Go. 500 requêtes avec 50
requêtes concurrentes :
- 22 secondes : 12ko générés en PHP avec cache côté serveur
activé (XCMS)
- 90 secondes : 12ko générés en PHP sans cache (XCMS)
- 3.71 secondes pour une image de 47ko
Je t'ai mis les résultats en fin de mail. Tu peux
également tester une charge plus "habituelle" en extrayant
les url de tes logs et en les mettant en entrée dans ab.
Essayes man ab pour voir si il lit l'entrée standard. A la
limite, ça serait pas mal de faire un shell qui automatise
le "replay" de fichiers de log n fois. Je mets ça dans ma
todolist.
Bons tests.
[TEST 1]
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146
$> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd,
http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation,
http://www.apache.org/
Benchmarking
www.elitwork.com.ewk
(be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Finished 500 requests
Server Software: Apache/2.2.16
Server Hostname:
www.elitwork.com.ewk
Server Port: 80
Document Path: /
Document Length: 12456 bytes
Concurrency Level: 50
Time taken for tests: 22.312500 seconds
Complete requests: 500
Failed requests: 0
Write errors: 0
Total transferred: 6396000 bytes
HTML transferred: 6228000 bytes
Requests per second: 22.41 [#/sec] (mean)
Time per request: 2231.250 [ms] (mean)
Time per request: 44.625 [ms] (mean, across all
concurrent requests)
Transfer rate: 279.93 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 2.6 0 15
Processing: 406 2187 459.2 2250 3421
Waiting: 390 2089 429.6 2125 3218
Total: 406 2188 459.3 2250 3421
Percentage of the requests served within a certain time (ms)
50% 2250
66% 2312
75% 2359
80% 2390
90% 2515
95% 2859
98% 3171
99% 3281
100% 3421 (longest request)
[TEST 2]
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146
$> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd,
http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation,
http://www.apache.org/
Benchmarking
www.elitwork.com.ewk
(be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Finished 500 requests
Server Software: Apache/2.2.16
Server Hostname:
www.elitwork.com.ewk
Server Port: 80
Document Path: /
Document Length: 12477 bytes
Concurrency Level: 50
Time taken for tests: 89.796875 seconds
Complete requests: 500
Failed requests: 481
(Connect: 0, Length: 481, Exceptions: 0)
Write errors: 0
Total transferred: 6455956 bytes
HTML transferred: 6265456 bytes
Requests per second: 5.57 [#/sec] (mean)
Time per request: 8979.688 [ms] (mean)
Time per request: 179.594 [ms] (mean, across all
concurrent requests)
Transfer rate: 70.20 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 2.4 0 15
Processing: 2046 8802 1658.7 8906 13906
Waiting: 2000 8596 1627.1 8687 13703
Total: 2046 8802 1658.9 8906 13906
Percentage of the requests served within a certain time (ms)
50% 8906
66% 9031
75% 9078
80% 9125
90% 9296
95% 11750
98% 13390
99% 13656
100% 13906 (longest request)
[TEST 3]
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146
$> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd,
http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation,
http://www.apache.org/
Benchmarking
www.elitwork.com.ewk
(be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Finished 500 requests
Server Software: Apache/2.2.16
Server Hostname:
www.elitwork.com.ewk
Server Port: 80
Document Path: /images/refs/48-thumb.png
Document Length: 46527 bytes
Concurrency Level: 50
Time taken for tests: 3.718750 seconds
Complete requests: 500
Failed requests: 0
Write errors: 0
Total transferred: 23387500 bytes
HTML transferred: 23263500 bytes
Requests per second: 134.45 [#/sec] (mean)
Time per request: 371.875 [ms] (mean)
Time per request: 7.438 [ms] (mean, across all
concurrent requests)
Transfer rate: 6141.58 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 4.7 0 15
Processing: 46 355 75.2 375 484
Waiting: 15 306 70.2 328 437
Total: 46 357 74.9 375 484
Percentage of the requests served within a certain time (ms)
50% 375
66% 390
75% 406
80% 421
90% 437
95% 437
98% 453
99% 453
100% 484 (longest request)
--
Cordialement, Nicolas Froidure, gérant, Elitwork SARL.