我第一次尝试对一个由 gunicorn 和 nginx 运行的简单 django web 应用程序进行压力测试,我将其放在一个 256MB 的小型 Rackspace 云服务器上。
使用 httperf,我增加每秒的连接数,直到开始出现错误,例如
httperf --hog --server=localhost --uri=/myapp --timeout=10 --num-conns=2500 --rate=25
我发现,对于 django 的一个简单几乎静态的页面,在开始引发错误之前,我可以获得大约 35 个请求/秒。
对于需要数据库查找和更多处理的更动态的页面,我可以获得大约 25 个请求/秒。
最初我只使用 1 个 gunicorn 工作程序,但增加到 4 个工作程序(我认为我的云服务器有 4 个核心)似乎没有任何区别(它仍然开始抛出高于 25 req/sec 的错误)。
考虑到这是在如此小(256MB)的服务器上运行,这些结果听起来是否符合预期?
此外,我可以做哪些改变来提高吞吐量?