最近我在Jython平台上尝试使用Django,并想要测试它在“生产”环境下的性能表现。我测试的网站只是一个简单的return HttpResponse("Time %.2f" % time.time())
视图,没有涉及到数据库。
我尝试了以下两种组合(使用ab -c15 -n500 -k <url>
进行测量,所有操作都在VirtualBox上运行的Ubuntu Server 10.10中):
J2EE应用服务器(Tomcat/Glassfish),部署WAR文件
我得到了如下结果:
Requests per second: 143.50 [#/sec] (mean) [...] Percentage of the requests served within a certain time (ms) 50% 16 66% 16 75% 16 80% 16 90% 31 95% 31 98% 641 99% 3219 100% 3219 (longest request)
显然,服务器偶尔会挂起几秒钟,这是不可接受的。我猜这与重新加载Jython有关,因为启动
jython
shell也需要大约3秒钟。使用修补过的flup包进行AJP服务(+ Apache作为前端)
注意:flup是
manage.py runfcgi
使用的包,我不得不对其进行修补,因为flup的线程/分支支持似乎在Jython上无法工作(-> AJP是唯一可行的方法)。这里几乎有相同的结果,但有时最后100个请求甚至根本没有得到回答(但服务器进程仍然存活)。
我在 SO 上提出这个问题(而不是 serverfault),因为这非常特定于 Django/Jython。有没有人在 Jython 上部署 Django 网站的经验?也许有其他更快的方法来提供网站?或者在 Java 平台上使用 Django 还为时过早?