acelerando o servidor django

2

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!

    
por asciitaxi 21.04.2011 / 12:33

1 resposta

0

Aumente os processos do WSGIDaemonProcess para pelo menos duas vezes o número de CPUs e tente novamente

    
por 20.07.2011 / 10:12