我們有一個SOAP mod_wsgi(apache)應用程序有時負載很重。相同的Apache服務器還有一些其他的wsgi-apps。不幸的是,你可以只在服務器級別設置MaxClients,而不是每個wsgi-app。一個wsgi應用程序吃所有的apache客戶端
我們得到:
server reached MaxClients setting, consider raising the MaxClients setting
有沒有辦法從吃的都是Apache的工人停止這個WSGI應用程序?
我想僅返回503「Service Unavailable」給連接到SOAP wsgi應用程序的SOAP客戶端。
Apache的配置片段:
WSGIDaemonProcess soap_app threads=1 processes=3
WSGIScriptAlias /soap_app /home/soap_app/django_wsgi.py
<Location "/soap_app/">
WSGIProcessGroup soap_app
WSGIApplicationGroup %{GLOBAL}
</Location>
有3只爲SOAP應用WSGI守護進程。但它佔據了更多的阿帕奇工人。
更新: 我們使用apache prefork mpm。有N阿帕奇工人。而對於mod_wsgi,我們也使用prefork。有M個mod_wsgi工作進程。阿帕奇工人數可以由MaxClients控制。 mod_wsgi工作計數由上述配置控制。
我想你不能在python wsgi應用程序(django)中處理這個問題。我想它需要通過mod_wsgi或apache配置來完成。
這裏是mod_status的第一行:
Server Version: Apache/2.2.17 (Linux/SUSE) mod_ssl/2.2.17 OpenSSL/1.0.0c
mod_wsgi/3.3 Python/2.7
Server Built: 2011-07-26 13:43:36.000000000 +0000
===============================================================================
Current Time: Thursday, 20-Sep-2012 13:15:11 CEST
Restart Time: Thursday, 06-Sep-2012 16:30:45 CEST
Parent Server Generation: 0
Server uptime: 13 days 20 hours 44 minutes 25 seconds
Total accesses: 307471 - Total Traffic: 7.7 GB
CPU Usage: u11.85 s1.56 cu0 cs0 - .00112% CPU load
.257 requests/sec - 6.8 kB/second - 26.4 kB/request
127 requests currently being processed, 13 idle workers
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWKWWWWW_WWWWWKWWWWWWWWW_WWWWWW_WW_WWWWWWK._WW
W__WW__._W_W__........
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process
Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
0-0 15135 0/27/ W 0.04 8417 0 0.0 0.37 290.12 10.1.1.1 foohost POST /soap_app/foo HTTP/1.1
11553
0/
1-0 15142 125/ W 0.18 7354 0 0.0 2.48 324.82 10.1.1.1 foohost POST /soap_app/foo HTTP/1.1
12475
0/
2-0 18350 157/ W 0.27 4780 0 0.0 4.84 300.09 10.1.1.1 foohost POST /soap_app/foo HTTP/1.1
11249
3-0 20112 0/10/ W 0.02 7106 0 0.0 0.29 315.77 10.1.1.1 foohost POST /soap_app/foo HTTP/1.1
12714
4-0 16562 0/35/ W 0.07 7853 0 0.0 0.96 328.98 10.1.1.1 foohost POST /soap_app/foo HTTP/1.1
12098
5-0 20152 0/25/ W 0.06 6732 0 0.0 0.71 288.17 10.1.1.1 foohost POST /soap_app/foo HTTP/1.1
請發表評論,如果你不明白的問題一個gunicorn實例。 – guettli
做守護進程和apache worker不是什麼意思嗎? – Xuan
@軒我更新了這個問題。 – guettli