Executando vários FCGI / Django no Nginx para compartilhamento de carga

2

Estou executando um serviço da web em Nginx / FastCGI / Django. Nosso tempo de processamento é bastante longo e intensivo da CPU e eu gostaria de poder executar vários processos do Django / FastCGI para compartilhar a carga. Como faço para definir o Nginx para solicitações de roteamento de uma única fonte para várias instâncias do Django / FastCGI? (Eu posso executar várias instâncias em várias portas / soquetes, mas não sei como fazer com que o Nginx compartilhe a carga de processamento entre elas).

Qualquer ajuda muito apreciada.

    
por Barry 23.07.2010 / 08:08

3 respostas

1

link

Funciona com proxy_pass e fastcgi_pass.

    
por 23.07.2010 / 08:31
1

Eu percebo que a pergunta é para o fastcgi, mas a maneira mais fácil e rápida de gerar e balancear a carga de um cluster de aplicativos da Web do Python com o nginx é NÃO usar o módulo fastcgi, mas usar o módulo "uWSGI". Exemplo de configuração do nginx:

upstream uwsgicluster {
     server 127.0.0.1:9001;
     server 192.168.100.101:9001;
     server 192.168.100.102:9001;
     server 192.168.100.103:9001;
     server 192.168.100.104:9001;
}

server {
    listen   80;
    server_name www.mysite.com mysite.com;
    access_log /srv/www/mysite.com/logs/access.log;
    error_log /srv/www/msysite.com/logs/error.log;

    location / {
        include        uwsgi_params;
        uwsgi_pass     uwsgicluster;
    }

    location /static {
        root   /srv/www/mysite.com/public_html/static/;
        index  index.html index.htm;
    }
}
O site do uWSGI está aqui projects.unbit.it/uwsgi/ e veja a página de Exemplos incluindo o Django aqui: link

    
por 22.12.2010 / 12:16
0

De acordo com o site oficial , você pode gerar o fcgi com o parâmetro:

cd {project_location}

python ./manage.py runfcgi --settings={project}.settings_production maxchildren=10 \

maxspare=5 minspare=2 method=prefork socket={project_location}/log/django.sock pidfile={project_location}/log/django.pid

Ou talvez da mesma forma que o php-fcgi funciona em seu script conf, onde eu tenho (em /etc/init.d/php-fcgi ):

PHP_FCGI_CHILDREN=5

    
por 29.07.2010 / 01:39