我的设置是django 1.3和ubuntu 10.04的默认mod_wsgi和apache包。 我在我的开发虚拟机(DEBUG和debugging工具栏closures)上testing了我的应用程序的一个视图:
ab -n 200 -c 5 http://127.0.0.1/
每秒获得4个请求。 这似乎很慢,所以我简化了查询,使用索引等debugging工具栏告诉我,我有4个查询8ms。 运行同样的testing,我只能得到每秒8个请求。 CPU似乎一直在100%。 这对于现在非常简单的视图来说似乎相当缓慢,但它只是一个低功耗的虚拟机。
我决定启动一个大型的ec2实例(4个cpu),看看在这个机器类上我会得到怎样的性能,而且每秒只能得到13个请求, 我怎样才能改变apache / mod_wsgi的configuration,以获得更多的这个类的机器性能?
我想我正在使用工人而不是prefork:
$ /usr/sbin/apache2 -l Compiled in modules: core.c mod_log_config.c mod_logio.c worker.c http_core.c mod_so.c
我的工作人员configuration是:
<IfModule mpm_worker_module> StartServers 2 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxClients 150 MaxRequestsPerChild 0 </IfModule>
和我的WSGI设置如下所示:
WSGIScriptAlias / /home/blah/site/proj/wsgi.py WSGIDaemonProcess blah user=blah group=blah processes=1 threads=10 WSGIProcessGroup blah
非常感谢您的帮助!
将WSGIDaemonProcess过程增加到至less两倍的cpu数量,然后重试