低Apache / mod_wsgi吞吐量

时间:2011-02-19 17:50:36

标签: python apache mod-wsgi

我在pesto,mod_wsgi和Apache上运行了一个简单的WSGI应用程序:

def viewData(request):
    return Response("aaaaaaaaaa" * 120000) # return 1,2MB of data

在我的测试机器上,我获得大约100kb / s的吞吐量,这意味着请求大约需要12秒才能完成。从同一个Apache实例下载静态文件给我大约20MB / s。为什么会有这么大的差异,我怎样才能加快WSGI应用程序的速度?

软件版本:Ubuntu 10.04,Apache 2.2.14,Python 2.6.5,mod_wsgi 2.6(所有Ubuntu的默认包),pesto-18

编辑:此示例代表的真实应用不会尝试发送静态文件,但会动态生成大量HTML。 HTML生成很快(我通过cProfiletimeit运行),但传输速度很慢,我想解决这个问题。

编辑2 :我在同一堆栈上测试了当前版本的pesto(21)和mod_wsgi(3.3),吞吐量没有显着变化。我还用apache的mod_proxy后面的spawning 0.9.5替换了mod_wsgi - 这使吞吐量提高了四倍,但距离我想要的还有几英里远。

1 个答案:

答案 0 :(得分:4)

在WSGI中,应用程序或框架应该返回一个可迭代的。不知道这是不是Pesto所做的。

将您的代码更改为:

def viewData(request):
    return Response(["aaaaaaaaaa" * 120000])

再试一次。