【问题标题】:Django + lighttpd + fcgi performanceDjango + lighttpd + fcgi 性能
【发布时间】:2011-01-17 13:19:05
【问题描述】:

我正在使用 Django 处理相当长的 http post 请求,我想知道当我同时收到许多请求时我的设置是否有一些限制。

lighttpd.conf fcgi:

fastcgi.server = ( "a.fcgi" => ( “主要” => ( # 使用主机/端口代替套接字进行 TCP fastcgi "主机" => "127.0.0.1", “端口” => 3033, “检查本地” => “禁用”, “允许-x-发送文件”=>“启用” )) )

Django init.d 脚本开始部分:

启动-停止-守护进程 --start --quiet \ --pidfile /var/www/tmp/a.pid \ --chuid www-data --exec /usr/bin/env --python \ /var/www/a/manage.py runfcgi \ 主机=127.0.0.1 端口=3033 pidfile=/var/www/tmp/a.pid

使用上面的脚本启动 Django 会产生一个多线程的 Django 服务器:

www-数据 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-数据 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-数据 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-数据 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-数据 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-数据 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) 得到 proc: pid: 0 socket: tcp:127.0.0.1:3033 load: 10

我的设置是否正确,可以同时处理许多长的 http post 请求(每个可以持续几分钟)?

【问题讨论】:

    标签: django post load lighttpd fastcgi


    【解决方案1】:

    我认为您可能希望将您的 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 内核数量的进程对并发性没有多大帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      • 2014-04-27
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      • 2012-10-21
      • 2010-11-03
      相关资源
      最近更新 更多