在Nginx上运行多个FCGI / Django进行负载分担

我在Nginx / FastCGI / Django上运行一个Web服务。 我们的处理时间相当长,CPU密集型,我希望能够运行多个Django / FastCGI进程来共享负载。 我如何设置Nginx的路由请求从单一来源到多个Django / FastCGI的实例? (我可以在多个端口/套接字上运行多个实例,但我不知道如何让Nginx共享它们之间的处理负载。)

任何帮助非常感谢。

http://wiki.nginx.org/NginxHttpUpstreamModule

适用于proxy_pass和fastcgi_pass。

我意识到这个问题是针对fastcgi的,但是使用nginx产生和负载均衡Python web应用程序的最简单,最快速的方法是不使用fastcgi模块,而是使用“uWSGI”模块。 示例nginxconfiguration:

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

根据官方网站 ,你可以用参数产生fcgi:

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

或者,也可以像php-fcgi在其conf脚本中那样工作(在/etc/init.d/php-fcgi ):

PHP_FCGI_CHILDREN = 5