Я запускаю веб-сервис на 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