2012-11-06 15 views
0

根據以下... supervisord需要大量的CPU。主管正在管理我的uWSGI應用程序。這看起來不是很多嗎?我怎樣才能減輕這種負擔?我可以更改+1嗎?主管在8核心機器上佔用20%-30%的CPU時間

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 <%[email protected]_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

你能否包含你的'supervisord'配置?另外,'supervisord'使用'select'調用,內核通知一個新的I/O進程;如果你的'uwsgi'進程產生大量的輸出(主要是日誌輸出),那麼'supervisord'會被喚醒很多來處理這些輸出。這並不一定意味着它做得太多。 –

+0

我有4個這樣的服務器。他們正在做6K qps。我將推薦包含supervisord.conf文件。 – Tampa

+0

我也加了iotop的輸出。我只注意到我遺漏了uwsgi上的禁用日誌記錄。我顯然不希望記錄 – Tampa

回答

1

您需要可以關閉uwsgi請求記錄(--disable-logging),或配置uwsgi在其他地方登錄請求使用--logtoUDP logging options提供。

現在發生的事情是,你的uwsgi進程正在發送大量的標準輸出數據,所以內核正在喚醒你的supervisord進程以處理日誌數據(通過調用select())。 6K qps你真的想有其他的東西來處理這些日誌數據量。

相關問題