我正在使用Django来处理相当长的http帖子请求,我想知道当我同时收到很多请求时,我的设置是否有一些限制。
lighttpd.conf fcgi:
fastcgi.server = ( "a.fcgi" => ( "main" => ( # Use host / port instead of socket for TCP fastcgi "host" => "127.0.0.1", "port" => 3033, "check-local" => "disable", "allow-x-send-file" => "enable" )) )
Django init.d脚本开始部分:
start-stop-daemon --start --quiet \ --pidfile /var/www/tmp/a.pid \ --chuid www-data --exec /usr/bin/env -- python \ /var/www/a/manage.py runfcgi \ host=127.0.0.1 port=3033 pidfile=/var/www/tmp/a.pid
使用上面的脚本启动Django会产生多线程Django服务器:
www-data 342 7873 0 04:58 ? 00:01:04 python /var/www/a/manage.py runfcgi host=127.0.0.1 port=3033 pidfile=/var/www/tmp/a.pid www-data 343 7873 0 04:58 ? 00:01:15 python /var/www/a/manage.py runfcgi host=127.0.0.1 port=3033 pidfile=/var/www/tmp/a.pid www-data 378 7873 0 Feb14 ? 00:04:45 python /var/www/a/manage.py runfcgi host=127.0.0.1 port=3033 pidfile=/var/www/tmp/a.pid www-data 382 7873 0 Feb12 ? 00:14:53 python /var/www/a/manage.py runfcgi host=127.0.0.1 port=3033 pidfile=/var/www/tmp/a.pid www-data 386 7873 0 Feb12 ? 00:12:49 python /var/www/a/manage.py runfcgi host=127.0.0.1 port=3033 pidfile=/var/www/tmp/a.pid www-data 7873 1 0 Feb12 ? 00:00:24 python /var/www/a/manage.py runfcgi host=127.0.0.1 port=3033 pidfile=/var/www/tmp/a.pid
在lighttpd error.log中,我看到load = 10表明我同时收到了很多请求,这种情况一天发生几次:
2010-02-16 05:17:17: (mod_fastcgi.c.2979) got proc: pid: 0 socket: tcp:127.0.0.1:3033 load: 10
我的设置是否正确可以同时处理许多长的http发布请求(每个可以持续几分钟)?
答案 0 :(得分:4)
我认为您可能希望将fastcgi worker配置为运行多处理或多线程。
来自manage.py runfcgi help
:
method=IMPL prefork or threaded (default prefork)
[...]
maxspare=NUMBER max number of spare processes / threads
minspare=NUMBER min number of spare processes / threads.
maxchildren=NUMBER hard limit number of processes / threads
所以你的开始命令是:
start-stop-daemon --start --quiet \
--pidfile /var/www/tmp/a.pid \
--chuid www-data --exec /usr/bin/env -- python \
/var/www/a/manage.py runfcgi \
host=127.0.0.1 port=3033 pidfile=/var/www/tmp/a.pid \
method=prefork maxspare=4 minspare=4 maxchildren=8
您需要根据需要调整进程数。请注意,您拥有的FCGI流程越多,您的内存使用量就会线性增加。此外,如果您的进程受CPU限制,那么拥有的进程数量多于可用CPU核心数量对并发性没有多大帮助。