Django上的压力测试使得它在有免费系统资源时变慢

时间:2013-10-31 18:53:04

标签: python mysql django apache

今天我正在对一个在Ubuntu Server 12.04网站上运行的新Django(1.5.4)进行压力测试,然后才投入生产,我发现了一些意想不到的结果:

每秒执行50次请求,htop显示CPU使用率约为50%,RAM也约为50%。我目前没有使用Django缓存并且在进行压力测试时执行正常的浏览器请求需要大约30秒来加载每个页面(没有任何负载需要< = 2s)。测试期间服务器没有崩溃,但是我没有说明为什么如果有近50%的资源可用,它会持续这么多......我希望看到更高的CPU和内存使用量!

所以,我的问题是:是否有任何Django默认设置限制每秒的请求数量?或者Apache或mod_wsgi有任何限制吗?我是否需要更改一些MySQL配置?

(注意:我是软件工程师,而不是系统管理员)。

2 个答案:

答案 0 :(得分:1)

可能缓存是你的答案。我不知道Django是如何运行Apache的,因为我运行了一个Gunicorn设置,但是它为每次数据库调用都会进行往返。

如果您设置一些内存缓存来处理常见的结果集,您应该看到一个很大的改进,因此您不必为每个请求进行旅行。

此外,一次50个并发连接请求似乎很多。尝试将其调低至5或10然后25,而不是从50开始。

只是我的意见。

答案 1 :(得分:0)

你在运行django有多少工人?也许服务器无法加载到100%,因为你运行的是少量的工作者,但是有很多数据库连接,因此大多数时候工作者正在等待数据库,并阻塞新的连接。