Назад | Перейти на главную страницу

Запуск нескольких FCGI / Django на Nginx для распределения нагрузки

Я запускаю веб-сервис на Nginx / FastCGI / Django. Наше время обработки довольно долгое и интенсивное использование ЦП, и я хотел бы иметь возможность запускать несколько процессов Django / FastCGI для разделения нагрузки. Как настроить Nginx для маршрутизации запросов из одного источника в несколько экземпляров Django / FastCGI? (Я могу запускать несколько экземпляров на нескольких портах / сокетах, но я не знаю, как заставить Nginx распределять нагрузку обработки между ними.)

Любая помощь очень ценится.

Я понимаю, что вопрос касается fastcgi, но самый простой и быстрый способ создать и сбалансировать нагрузку кластера веб-приложений Python с помощью nginx - НЕ использовать модуль fastcgi, а использовать модуль «uWSGI». Пример конфигурации 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;
    }
}

Веб-сайт uWSGI находится здесь projects.unbit.it/uwsgi/, и обязательно посмотрите страницу примеров, включая Django здесь: http://projects.unbit.it/uwsgi/wiki/Example

http://wiki.nginx.org/NginxHttpUpstreamModule

Работает как с proxy_pass, так и с fastcgi_pass.

Согласно Официальный сайт, вы можете создать fcgi с параметром:

компакт-диск {project_location}

python ./manage.py runfcgi --settings = {проект} .settings_production maxchildren = 10 \

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

Или, может быть, так же, как php-fcgi работает в своем скрипте conf, где у меня есть (в /etc/init.d/php-fcgi):

PHP_FCGI_CHILDREN = 5