mod_wsgi,apache2和平均负载

我有一个服务器在mod_wsgi下的apache2上运行几个cherrypy应用程序。 我们看到一个没有提供多less请求的盒子上的平均负载平均波动。 据我所知,这个盒子没有真正的CPU负载,有足够的内存,很less的networkingstream量,没有发生磁盘I / O。 我们正在运行13个mod_wsgi守护进程,每个进程有5个线程,为5个不同的应用程序提供服务。 这些都是非常轻量级的后端服务应用程序,根本没有做太多的处理。 我已经检查了所有我能想到的作为扑翼的原因,并想知道这里的任何人是否有类似的问题的经验。 任何意见不胜感激。

以下是在每分钟10秒请求的分段框中,大约5分钟的平均负载平均值:

~ $ sar -q 5 Linux 2.6.32-305-ec2 01/27/2011 _i686_ (1 CPU) 04:18:37 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 04:18:42 AM 0 257 1.52 1.90 1.89 04:18:47 AM 0 257 1.40 1.87 1.88 04:18:52 AM 0 257 1.28 1.84 1.87 04:18:57 AM 0 257 1.18 1.81 1.86 04:19:02 AM 0 257 1.17 1.79 1.85 04:19:07 AM 0 257 1.15 1.78 1.85 04:19:12 AM 0 257 1.14 1.77 1.84 04:19:17 AM 0 257 1.05 1.74 1.83 04:19:22 AM 0 257 0.96 1.71 1.82 04:19:27 AM 0 257 0.89 1.68 1.81 04:19:32 AM 0 256 0.82 1.65 1.80 04:19:37 AM 0 256 0.75 1.62 1.79 04:19:42 AM 0 256 0.69 1.60 1.78 04:19:47 AM 0 256 0.95 1.64 1.79 04:19:52 AM 0 256 1.20 1.67 1.81 04:19:57 AM 0 256 1.42 1.71 1.82 04:20:02 AM 0 256 1.31 1.68 1.81 04:20:07 AM 0 256 2.00 1.82 1.85 04:20:12 AM 0 256 2.64 1.96 1.89 04:20:17 AM 0 256 3.23 2.09 1.94 04:20:22 AM 0 256 2.97 2.06 1.93 04:20:27 AM 0 256 2.74 2.02 1.92 04:20:32 AM 0 256 2.52 1.99 1.91 04:20:37 AM 0 256 2.31 1.95 1.90 04:20:42 AM 0 256 2.13 1.92 1.89 04:20:47 AM 0 256 1.96 1.89 1.88 04:20:52 AM 0 256 1.80 1.86 1.87 04:20:57 AM 0 256 1.66 1.83 1.85 04:21:02 AM 0 256 1.52 1.80 1.84 04:21:07 AM 0 256 1.40 1.77 1.83 04:21:12 AM 0 256 1.29 1.74 1.82 04:21:17 AM 0 256 1.19 1.71 1.81 04:21:22 AM 0 256 1.09 1.68 1.80 04:21:27 AM 0 256 1.00 1.65 1.79 04:21:32 AM 0 256 0.92 1.62 1.78 04:21:37 AM 0 256 0.85 1.59 1.77 04:21:42 AM 0 256 0.78 1.57 1.77 04:21:47 AM 0 256 0.72 1.54 1.76 04:21:52 AM 0 256 0.98 1.58 1.77 04:21:57 AM 0 256 1.22 1.62 1.78 04:22:02 AM 0 256 1.44 1.66 1.79 04:22:07 AM 0 256 2.13 1.80 1.83 04:22:12 AM 0 256 2.76 1.93 1.88 04:22:17 AM 0 256 3.34 2.07 1.92 04:22:22 AM 0 256 3.87 2.20 1.96 04:22:27 AM 0 256 3.56 2.16 1.95 04:22:32 AM 0 256 3.28 2.13 1.94 04:22:37 AM 0 256 3.01 2.09 1.93 04:22:42 AM 0 256 2.77 2.06 1.92 04:22:47 AM 0 256 2.55 2.02 1.91 04:22:52 AM 0 256 2.34 1.99 1.90 04:22:57 AM 0 256 2.16 1.95 1.89 04:23:02 AM 0 256 1.98 1.92 1.88 04:23:07 AM 0 256 1.82 1.89 1.87 04:23:12 AM 0 256 1.68 1.86 1.86 

和顶尖的个人资料:

 top - 04:38:57 up 1:17, 1 user, load average: 2.55, 3.03, 2.46 Tasks: 78 total, 1 running, 77 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1741016k total, 946844k used, 794172k free, 63712k buffers Swap: 917496k total, 0k used, 917496k free, 646064k cached 

每个请求,一个服务的Apacheconfiguration(他们都很像这样)。

 Listen 12800 <VirtualHost *:12800> WSGIScriptAlias / /var/www/services/tracking/tracking.wsgi WSGIDaemonProcess tracking user=www-data group=www-data processes=3 threads=5 maximum-requests=1000 umask=0007 WSGIProcessGroup tracking WSGIApplicationGroup tracking WSGIPassAuthorization On ErrorLog /var/log/apache2/tracking.error.log CustomLog /var/log/apache2/tracking.access.log combined LogLevel warn </VirtualHost> 

我们还没有真正为mod_wsgi做过任何特定的参数调优,超出了你在这个conf中所看到的。

你确定他们是在守护进程模式下运行,而不是在embedded式模式下运行? embedded模式可能会导致肥胖的Python Web应用程序的不良行为,具体取决于使用的MPM和MPM设置。 看到:

http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html

如果使用守护进程模式,并且已经将最大请求设置为一个非常低的值,那么也可能导致自己的问题。 不活动超时也可能导致问题,如果有不频繁的stream量,并使用大量的进程。

build议您发布与mod_wsgi相关的Apacheconfiguration部分。