Rails 测试了几个常去的网站,发现 QPS 到 26 左右就上不去,就是单机 Rails 应用的极限了吗?

scige · 2012年11月25日 · 最后由 scige 回复于 2012年11月25日 · 12075 次阅读

工具用 http_load,在公司的服务器上做的测试,我这边的带宽不是问题

我在云服务器上的 Rails 应用,nginx+passenger $ http_load -p 5 -s 10 urls 175 fetches, 5 max parallel, 1.48505e+06 bytes, in 10 seconds 8486 mean bytes/connection 17.5 fetches/sec, 148505 bytes/sec msecs/connect: 11.7533 mean, 100.123 max, 1.872 min msecs/first-response: 253.544 mean, 1797.26 max, 50.015 min HTTP response codes: code 200 -- 175

$ http_load -p 30 -s 10 urls 255 fetches, 30 max parallel, 2.16393e+06 bytes, in 10 seconds 8486 mean bytes/connection 25.5 fetches/sec, 216393 bytes/sec msecs/connect: 231.678 mean, 450.523 max, 1.917 min msecs/first-response: 595.631 mean, 2215.58 max, 142.245 min HTTP response codes: code 200 -- 255

$ http_load -p 30 -s 30 urls 784 fetches, 30 max parallel, 6.65302e+06 bytes, in 30 seconds 8486 mean bytes/connection 26.1333 fetches/sec, 221767 bytes/sec msecs/connect: 310.235 mean, 450.555 max, 2.066 min msecs/first-response: 481.559 mean, 1282.8 max, 133.443 min HTTP response codes: code 200 -- 784

$ http_load -p 50 -s 30 urls 780 fetches, 50 max parallel, 6.61908e+06 bytes, in 30 seconds 8486 mean bytes/connection 26 fetches/sec, 220636 bytes/sec msecs/connect: 518.74 mean, 750.023 max, 2.041 min msecs/first-response: 779.266 mean, 1890.49 max, 142.368 min HTTP response codes: code 200 -- 780

QPS 到 26 就上不去了,Latency 在不断变大 同时也测试了 ruby-china 和 codecampo 也是这样的

1 楼 已删除

ruby-china 也许是服务器带宽不够,记得说是 2M 的 codecampo,国外进出带宽应该有限制的吧

可以去顶部的酷站找几个大的商业网站试试

@cxh116 应该不是带宽的问题,即使是 100 的并发,对方服务器的发送数据才是 220636 bytes/sec,远没有达到2M。如果测试大站,就没法知道单机的性能了吧,也不知道他们是单机还是集群的。

#3 楼 @scige 这个 2m 貌似是非 byte,应该是 200KB/s 的意思 如果是这样的话,差不多到了带宽的极限

的确,商业网站一般都做了多机负载,不好测

很多站点资源(特别是内存)有限,仅跑了几个 Rails instance。但单机决不会只能撑到这个数。

同时 DB 的性能和单个 url 的响应时间关系也很大。

@cxh116 老兄说的有道理,2M 带宽确实是 2Mbit = 256kbyte,对方服务器带宽达到了瓶颈。我上服务器本地压了一下,33.8333 fetches/sec, 287110 bytes/sec,不过这时 CPU 已经到了 100%,比较危险了。当 26QPS 的时候,CPU 是 80% 以下,还可以。 这次测试,内存没有问题,CPU 是 1 个核,看来当服务器达到瓶颈的时候,增加 CPU 性能提升效果应该比较明显。

@ashchan 服务器是 1 核,1.5G 内存,只跑了 6 个 instance,目前没有条件测试多内存增加的性能情况。以老兄的经验看来,如果有条件增加 CPU 或内存,Rais 性能能够线性增加吗?哪个效果更明显一点? DB 我用的 MySQL

#7 楼 @scige 效果会明显,但不会是线性的。每个访问本身的响应非常重要。如果一个 url 请求能从 200ms 减到 150ms,整体就会提高不少。一般情况下,CPU 对性能影响不是太大。

压一个 php 的网站来对比一下,这样看不出情况啊。

@SErHo PHP 的性能分析网上太多了,Google 一下就知道了啊

需要 登录 后方可回复, 如果你还没有账号请 注册新账号