I have a webserver running apache (2.4.10) and mod_wsgi (3.4)
I have seen a cpu-load around 2.5 (on a 2 core HyperV-2012 machine) - and
cpu-utilization well below 10%.
After searching for information on how to improve things, I changed from
running mod_wsgi in embedded mode to
running it in daemon mode - in the hope that offloading the python code
from apache would help.
Unfortunately this is not the case. Cpu-load increased to around 8,
cpu-utilization was well over 10% - so clearly something is wrong!
I am using apache in prefork mode (yes, I know, but php5 module is not
threadsafe...) - with this configuration:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
At the global configuration level I have this:
WSGIDaemonProcess web-deploy processes=30 threads=5
display-name=wd-wsgi-daemon
WSGIProcessGroup web-deploy
Process tree (using htop) shows this:
1 [||||||||||
12.8%] Tasks: 81, 289 thr; 1 running
2 [||||||||
9.3%] Load average: 6.25 6.54 5.99
Mem[||||||||||||||||||||||||||||||||||||||||||||||||||||||5110/9996MB]
Uptime: 72 days, 03:19:58
Swp[| 10/1021MB]
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
1 root 20 0 90576 3288 2468 S 0.0 0.0 0:04.96 /sbin/init
46975 root 20 0 424M 20424 12792 S 0.0 0.2 0:02.06 ├─
/usr/sbin/apache2 -k start
51598 www-data 20 0 429M 24048 12744 S 0.0 0.2 0:12.50 │ ├─
/usr/sbin/apache2 -k start
51561 www-data 20 0 429M 24132 12744 S 0.0 0.2 0:12.29 │ ├─
/usr/sbin/apache2 -k start
47453 www-data 20 0 432M 27444 13568 S 0.0 0.3 0:40.11 │ ├─
/usr/sbin/apache2 -k start
47006 www-data 20 0 1414M 164M 7772 S 0.0 1.7 1:20.43 │ ├─
wd-wsgi-daemon -k start
47214 www-data 20 0 1414M 164M 7772 S 0.0 1.7 0:14.50 │ │ ├─
wd-wsgi-daemon -k start
47205 www-data 20 0 1414M 164M 7772 S 0.0 1.7 0:13.08 │ │ ├─
wd-wsgi-daemon -k start
47204 www-data 20 0 1414M 164M 7772 S 0.0 1.7 0:12.73 │ │ ├─
wd-wsgi-daemon -k start
47203 www-data 20 0 1414M 164M 7772 S 0.0 1.7 0:07.11 │ │ ├─
wd-wsgi-daemon -k start
47202 www-data 20 0 1414M 164M 7772 S 0.0 1.7 0:11.95 │ │ ├─
wd-wsgi-daemon -k start
47201 www-data 20 0 1414M 164M 7772 S 0.0 1.7 0:01.48 │ │ ├─
wd-wsgi-daemon -k start
47200 www-data 20 0 1414M 164M 7772 S 0.0 1.7 0:00.00 │ │ ├─
wd-wsgi-daemon -k start
26045 www-data 20 0 1414M 164M 7772 S 0.0 1.7 0:00.08 │ │ ├─
wd-wsgi-daemon -k start
26043 www-data 20 0 1414M 164M 7772 S 0.0 1.7 0:00.08 │ │ └─
wd-wsgi-daemon -k start
47005 www-data 20 0 1478M 147M 7108 S 0.0 1.5 1:19.79 │ ├─
wd-wsgi-daemon -k start
47212 www-data 20 0 1478M 147M 7108 S 0.0 1.5 0:17.69 │ │ ├─
wd-wsgi-daemon -k start
47211 www-data 20 0 1478M 147M 7108 S 0.0 1.5 0:09.00 │ │ ├─
wd-wsgi-daemon -k start
Strangely there are 9 threads in each wsgi-daemon (I would expect 8
including the 3 used for process control),
ref:
http://blog.dscpl.com.au/2014/02/use-of-threading-in-modwsgi-daemon-mode.html
WSGI daemons use quite a lot of memory - and I think we have too many
wsgi-daemon processes. The reason for the many processes is that
many of the python services use other network services (PostgreSQL, LDAP,
memcache), and I have read that the threads share a number
of common resources in this respect.
When using top, it looks like apache processes are using the cpu-resources,
wsgi-daemon processes don't even show up in the top of the list.
Apache handles approx. 75 requests/second with the above shown cpu-load.
After reverting to the previous configuration (no wsgi-daemons), htop shows
this:
1 [||||||
8.6%] Tasks: 51, 36 thr; 1 running
2 [|
0.7%] Load average: 1.87 2.20 3.28
Mem[|||||||||||||||||||||||||||||||||||||||||||
1917/9996MB] Uptime: 72 days, 03:59:56
Swp[| 11/1021MB]
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
39518 www-data 20 0 1008M 126M 14552 S 1.0 1.3 0:25.87
/usr/sbin/apache2 -k start
39405 www-data 20 0 1080M 129M 15280 S 1.0 1.3 0:24.94
/usr/sbin/apache2 -k start
39517 www-data 20 0 1068M 131M 14392 S 1.0 1.3 0:24.60
/usr/sbin/apache2 -k start
39560 www-data 20 0 1139M 131M 15116 S 1.0 1.3 0:26.76
/usr/sbin/apache2 -k start
39470 root 20 0 94320 4884 2812 R 0.0 0.0 0:14.37 htop
39514 www-data 20 0 1150M 141M 14392 S 0.0 1.4 0:21.83
/usr/sbin/apache2 -k start
39387 www-data 20 0 1032M 147M 17844 S 0.0 1.5 0:26.35
/usr/sbin/apache2 -k start
39468 www-data 20 0 1145M 135M 14400 S 0.0 1.4 0:25.96
/usr/sbin/apache2 -k start
39467 www-data 20 0 1019M 147M 16700 S 0.0 1.5 0:24.94
/usr/sbin/apache2 -k start
39466 www-data 20 0 1145M 144M 15688 S 0.0 1.5 0:24.90
/usr/sbin/apache2 -k start
Does anyone have a clue, or just a hint to what to do next?
Best Regards,
Lars
--
You received this message because you are subscribed to the Google Groups
"modwsgi" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/modwsgi.
For more options, visit https://groups.google.com/d/optout.