Aumente os processos do WSGIDaemonProcess para pelo menos duas vezes o número de CPUs e tente novamente
Minha configuração é o django 1.3 e os pacotes padrão mod_wsgi e apache para o Ubuntu 10.04. Eu testei uma visualização do meu aplicativo na minha VM de desenvolvimento (DEBUG e barra de ferramentas de depuração desativada):
ab -n 200 -c 5 http://127.0.0.1/
e recebi 4 solicitações por segundo. Isso pareceu lento, então simplifiquei as consultas, usei índices, etc. até o ponto em que a barra de ferramentas de depuração me informa que eu tenho 4 consultas que levam 8ms. Executando o mesmo teste, recebo apenas 8 solicitações por segundo. A CPU parece estar em 100% o tempo todo. Isso parece bastante lento para o que é agora uma visão bastante simples, mas é apenas uma VM com pouca energia.
Eu decidi iniciar uma grande instância ec2 (4 cpu) para ver que tipo de desempenho eu obteria nessa classe de máquina e fiquei surpreso em receber apenas 13 solicitações por segundo. Como posso alterar a configuração do apache / mod_wsgi para obter mais desempenho desta classe de máquina?
Acho que estou usando trabalhador em vez de 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
Minha configuração de trabalho é:
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
e minhas configurações de WSGI são assim:
WSGIScriptAlias / /home/blah/site/proj/wsgi.py
WSGIDaemonProcess blah user=blah group=blah processes=1 threads=10
WSGIProcessGroup blah
Muito obrigado pela sua ajuda!
Aumente os processos do WSGIDaemonProcess para pelo menos duas vezes o número de CPUs e tente novamente