根据以下内容...... supervisord占用了大量的cpu。主管正在管理我的uWSGI应用程序。这看起来不是很多吗?怎样才能减轻这种负担?我可以将nice更改为+1吗?
1 [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 76.6%] 5 [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 85.4%]
2 [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 85.4%] 6 [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 87.2%]
3 [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 82.2%] 7 [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 72.8%]
4 [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||95.3%] 8 [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 77.3%]
Mem[||||||||||||||||||||||| 1558/16050MB] Tasks: 57, 15 thr; 12 running
Swp[ 0/7627MB] Load average: 8.75 8.08 7.21
Uptime: 01:51:59
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
29617 root 20 0 491M 144M 2604 R 84.0 0.9 1:13.48 /usr/local/bin/uwsgi --loop gevent --carbon 103.4.112.50:2003 --socket 127.0.0.1:8060 --processes 7 --pp /home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbUwsgiBidderServer/ --wsgi-file /home/ubuntu/works
29615 root 20 0 421M 146M 2616 R 84.0 0.9 1:13.79 /usr/local/bin/uwsgi --loop gevent --carbon 103.4.112.50:2003 --socket 127.0.0.1:8060 --processes 7 --pp /home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbUwsgiBidderServer/ --wsgi-file /home/ubuntu/works
29337 root 20 0 444M 169M 2644 R 83.0 1.1 1:31.70 /usr/local/bin/uwsgi --loop gevent --carbon 103.4.112.50:2003 --socket 127.0.0.1:8060 --processes 7 --pp /home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbUwsgiBidderServer/ --wsgi-file /home/ubuntu/works
29613 root 20 0 423M 148M 2624 R 82.0 0.9 1:16.76 /usr/local/bin/uwsgi --loop gevent --carbon 103.4.112.50:2003 --socket 127.0.0.1:8060 --processes 7 --pp /home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbUwsgiBidderServer/ --wsgi-file /home/ubuntu/works
29333 root 20 0 591M 172M 2604 R 82.0 1.1 1:35.10 /usr/local/bin/uwsgi --loop gevent --carbon 103.4.112.50:2003 --socket 127.0.0.1:8060 --processes 7 --pp /home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbUwsgiBidderServer/ --wsgi-file /home/ubuntu/works
29474 root 20 0 428M 153M 2600 R 81.0 1.0 1:20.31 /usr/local/bin/uwsgi --loop gevent --carbon 103.4.112.50:2003 --socket 127.0.0.1:8060 --processes 7 --pp /home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbUwsgiBidderServer/ --wsgi-file /home/ubuntu/works
29611 root 20 0 429M 154M 2616 R 80.0 1.0 1:20.54 /usr/local/bin/uwsgi --loop gevent --carbon 103.4.112.50:2003 --socket 127.0.0.1:8060 --processes 7 --pp /home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbUwsgiBidderServer/ --wsgi-file /home/ubuntu/works
24760 root 20 0 49932 12520 1744 R 33.0 0.1 26:05.37 /usr/bin/python /usr/local/bin/supervisord
Supervisord配置:
# -*- conf -*-
[include]
files = *.supervisor
[supervisord]
pidfile = /var/run/supervisord.pid
nodaemon=false
[supervisorctl]
serverurl=unix:///var/run/supervisord.sock ; use a unix:// URL for a unix socket
[unix_http_server]
file = /var/run/supervisord.sock
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[program:uwsgiBidder]
autostart=true
autorestart=true
process_name = uwsgiBidder-%(process_num)s
<% if @enviroment=='production' -%>
command = /usr/local/bin/uwsgi --loop gevent --carbon <%=@carbon_ip_address%>:2003 --socket 127.0.0.1:8060 --processes <%= @bidder_cores %> --pp /home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbUwsgiBidderServer/ --wsgi-file /home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbUwsgiBidderServer/uwsgiBidderServer.py -b 62768 --master --async 2000 --enable-threads --listen 2048 --reload-on-rss 1200 --touch-reload /home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbUwsgiBidderServer/uwsgiBidderServer.py
<% end -%>
numprocs = 1
numprocs_start = 8060
stopsignal=QUIT
#user=www-data
#--uid www-data
这是iotop的输出
> Total DISK READ: 0.00 B/s | Total DISK WRITE: 27.46 K/s
> TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
> 280 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.27 %
> [jbd2/dm-1-8] 24760 be/4 root 0.00 B/s 388.30 K/s 0.00 %
> 0.00 % python /usr/local/bin/supervisord
> 1 be/4 roo
答案 0 :(得分:1)
您需要关闭uwsgi请求记录(--disable-logging
),或配置uwsgi以使用--logto
或提供的UDP logging options在其他地方记录请求。
现在发生的事情是你的uwsgi进程正在他们的stdout上发送大量数据,因此内核正在大量唤醒你的supervisord进程来处理日志数据(通过select()
调用)。使用6K qps,你真的希望有其他东西来处理这一数量的日志数据。