Mon programme d'installation est django 1.3 et les paquets par défaut mod_wsgi et apache pour ubuntu 10.04. Je l'ai testé une vue de mon application sur mon développement VM (DEBUG et barre d'outils de débogage off):accélérer le serveur django
ab -n 200 -c 5 http://127.0.0.1/
et reçu 4 demandes par seconde. Cela semblait lent alors j'ai simplifié les requêtes, les index utilisés, etc. au point où la barre d'outils de débogage me dit que j'ai 4 requêtes en 8ms. En exécutant le même test, je reçois seulement 8 demandes par seconde. Le CPU semble être à 100% tout le temps. Cela semble assez lent pour ce qui est maintenant une vue assez simple, mais c'est juste une VM faible puissance. J'ai décidé de démarrer une grande instance ec2 (4 cpu) pour voir quel genre de performance j'obtiendrais sur cette classe de machine et j'ai été surpris de ne recevoir que 13 requêtes par seconde. Comment puis-je changer la configuration d'apache/mod_wsgi pour obtenir plus de performance sur cette classe de machine?
Je pense que je me sers de travailleur plutôt que prefork:
$ /usr/sbin/apache2 -l
Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
worker.c
http_core.c
mod_so.c
Ma configuration des travailleurs est:
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
et mes paramètres WSGI ressembler à ceci:
WSGIScriptAlias//home/blah/site/proj/wsgi.py
WSGIDaemonProcess blah user=blah group=blah processes=1 threads=10
WSGIProcessGroup blah
Merci très beaucoup pour votre aide!
NOTE: J'ai essayé le test ab d'une autre instance et a obtenu le même résultat
Cela semblait le faire. 21 demandes par seconde maintenant. Aussi, je me suis souvenu que ces grandes instances ec2 ont seulement 2 processeurs physiques. Ainsi, mettre les processus à 2 a eu le même avantage. Merci! – asciitaxi