Sinatra sinatra 并发 性能

690492623qq · December 20, 2012 · Last by raecoo replied at March 28, 2013 · 5707 hits

今天 在 linux 服务器上 想看看 sinatra 下某个请求的并发数量 能达到多少。 demo:

require "sinatra"

get '/demo' do
   p "test"
end

然后用 thin start -p 4567 启动。。 用 ab 压测 ab -c 50 -n 2000 http://127.0.0.1:4567/demo Requests per second: 738.90 #/sec Time per request: 67.668 ms Time per request: 1.353 ms

这个请求很简单。 后来发现 sinatra 似乎还有提高并发更好的插件:sinatra-synchrony,官方说 对于网络并发有很大帮助。 官方地址:http://kyledrake.net/sinatra-synchrony/

于是按照官方做法试了一下: 增加了 require "sinatra/synchrony" 再次用 ab 压测 ab -c 50 -n 2000 http://127.0.0.1:4567/demo Requests per second: 784.88 #/sec Time per request: 63.704 ms Time per request: 1.274 ms

发现没啥变化。

官方提供 demo 和压测数据:

require 'sinatra'
require 'sinatra/synchrony'
get '/' do
  'Sinatra::Synchrony is loaded automatically in classic mode, nothing needed'
end

$ ab -c 50 -n 2000 http://127.0.0.1:9292/ ... Requests per second: 3102.30 #/sec Time per request: 16.117 ms Time per request: 0.322 ms

相差太大。当然我也知道,服务器性能也会影响压测数据。 但是从数据上看 sinatra 插件性能体现不是很明显。。

不知道,大家在对于提供 sinatra 的并发,有哪些好的举措。。。。。

700 够高了...

1 请求/秒就能撑起百万 PV/月的应用...

用 sinatra 来讲性能,不如直接上 express.

sinatra 可以当成是 rack 的中间件,配合 rails 等来使用

用 sinatra 的话,主要是其轻巧简便。 上面的 demo 是很简单的输出,但是业务的需求,需要你查询数据库,等等。 1:耗时间 2:占用资源 导致性能降低,最还的可能 程序 crash 针对这些,大家是如何解决的。 刚刚在 sinatra 加了 http 缓存 Rack::cache 然后对一个有业务数据接口进行压测:

ab -c 200 -n 10000 http://127.0.0.1:4567/api/test

添加 http Rack::cache 前的压测数据: Requests per second: 232.64 #/sec Time per request: 859.684 ms Time per request: 4.298 ms Transfer rate: 379.41 [Kbytes/sec] received

添加后的我压测了一下数据: Requests per second: 532.61 #/sec Time per request: 375.508 ms Time per request: 1.878 ms Transfer rate: 924.51 [Kbytes/sec] received

发现 程序处理能力 提高了一倍。。

Ps:httpcache 目前支持 get 方式 参考文献: http://stackoverflow.com/questions/626057/is-it-possible-to-cache-post-methods-in-http http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1

不知道这样的测试意义在哪?

#4 楼 @690492623qq 擦!直接测静态页面还能提升几倍呢!加油~

#5 楼 @alvin2ye 想知道 sinatra 框架 他的并发能力 能到什么程度,借助 sinatra 官方文档 提供信息,还有其他 gems 扩展。。最终目的 使得 程序并发 能力提高。可能社区其他人 用 sinatra 也会遇到同样的问题。我就把问题抛出来了。谁不想自己的程序并发能力提高了。。。。

@690492623qq 如果你要进行测试的话,还是的找一个真实的环境进行测试,本地测试这种感觉完全不靠谱呀,没有什么說明性。

9 Floor has deleted
You need to Sign in before reply, if you don't have an account, please Sign up first.