uWSGI-Django 在轮询方法上花费了太多时间
uWSGI-Django spending too much time on poll method
我正在为我的 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;
}
我现在完全迷路了,如有任何帮助,我们将不胜感激。
我终于解决了这个问题。显然问题是我禁用了离线压缩,但我使用的是 sass
文件,这些文件需要在运行时转换为 css
。事实证明这会导致大量 IO。当我启用离线压缩时,响应时间回落到 200 毫秒。
我正在为我的 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;
}
我现在完全迷路了,如有任何帮助,我们将不胜感激。
我终于解决了这个问题。显然问题是我禁用了离线压缩,但我使用的是 sass
文件,这些文件需要在运行时转换为 css
。事实证明这会导致大量 IO。当我启用离线压缩时,响应时间回落到 200 毫秒。