【问题标题】:uWSGI-Django spending too much time on poll methoduWSGI-Django 在 poll 方法上花费了太多时间
【发布时间】:2016-09-14 14:00:15
【问题描述】:

我在我的 Django 项目中使用了 Nginx-uWSGI 组合,但是当我将它与 Nginx-Apache-modwsgi 组合进行比较时,它的性能低于标准。显然 uwsgi 需要大约 3-5 秒来为请求提供响应,这些请求最多应该在大约 300-400 毫秒内到达服务器。

当我运行分析时,我意识到大部分时间都花在了 uWSGI Handler 中的response.render 函数上。以下是分析结果 -

我无法弄清楚为什么method poll 占用了超过 90% 的时间,即使服务器上只有一个请求。

这是我的uwsgi配置

[uwsgi]
uid = www-data
gid = www-data
listen = 10000
socket-timeout = 60
socket-send-timeout = 60
socket-write-timeout = 60
set-placeholder = username=sysadmin
set-placeholder = project_directory=/home/sysadmin/builds/deploy_dir/qa_shine
set-placeholder = ruby_shims_path=/home/sysadmin/.rbenv/shims
socket = /run/%n.sock
chmod-socket = 666
chdir = %(project_directory)
pidfile = /run/%n.pid
wsgi-file = deploy/uwsgi.py
master = true
processes = 1
threads = 1
harakiri = 160
virtualenv = /home/%(username)/Envs/candidate/
stats = 127.0.0.1:9191
vacuum = true
die-on-term = true
daemonize = /var/log/uwsgi/%n.log
env = LANG=en_US.UTF-8
auto-procname = true
env = PATH=%(ruby_shims_path):$(PATH)
env = RUBYPATH=%(ruby_shims_path)/ruby
rbrequire = rubygems

我的 nginx 上游配置

location / {
    uwsgi_pass django;
    include uwsgi_params;

    proxy_buffering off;
    proxy_buffers 128 128k;
    proxy_buffer_size 128k;
    proxy_temp_path /run/ 1 2;

    uwsgi_read_timeout       60;
    uwsgi_send_timeout       60;
    uwsgi_connect_timeout    60;
    send_timeout             60;
}

# basic conf
events {
    worker_connections  8192;
    use epoll;
    multi_accept on;
}

我现在完全迷路了,任何帮助将不胜感激。

【问题讨论】:

  • 为什么要为不同的进程调用两次相同的库。还有一点"how to manage your application cache ?" 就像这个import a;import b; #But 'a' include 'b' so you got "(a-b)+2b"。每个函数调用的多次延迟。
  • 你试过改变uwsgi进程的数量吗?通常,您至少有 2 个,即使在单核机器上也是如此。您还可以指定让您的 uwsgi 工作人员生成异步线程,但这取决于您的环境以及您希望实现的目标
  • 是的,通常我使用 10 个进程和 2 个线程
  • 但是不管有多少进程,情况都是一样的

标签: python django sockets nginx uwsgi


【解决方案1】:

最后我解决了这个问题。显然问题是我禁用了离线压缩,但我使用的是sass文件,需要在运行时转换为css。事实证明,这导致了很多 IO。当我启用离线压缩时,响应时间回落到 200 毫秒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-15
    • 2020-07-23
    • 2013-07-11
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多