我在 Nginx/FastCGI/Django 上运行 Web 服务。我们的处理时间相当长且占用大量 CPU,我希望能够运行多个 Django/FastCGI 进程来分担负载。如何设置 Nginx 以将来自单个源的请求路由到多个 Django/FastCGI 实例?(我可以在多个端口/套接字上运行多个实例,但我不知道如何让 Nginx 在它们之间分担处理负载。)
任何帮助都非常感谢。
答案1
http://wiki.nginx.org/NginxHttpUpstreamModule
与 proxy_pass 和 fastcgi_pass 配合使用。
答案2
我知道这个问题是关于 fastcgi 的,但使用 nginx 生成和负载平衡 Python Web 应用程序集群的最简单、最快捷的方法是不使用 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/示例
答案3
根据官方网站,你可以使用以下参数生成 fcgi:
cd {项目位置}
python./manage.py runfcgi--settings={项目}.settings_production maxchildren=10\
maxspare=5 minspare=2 方法=prefork socket={project_location}/log/django.sock pidfile={project_location}/log/django.pid
或者可能以与 php-fcgi 在其配置脚本中的工作方式相同,其中我(在/etc/init.d/php-fcgi
):
PHP_FCGI_CHILDREN=5