Sinatra + Mongo并行请求

时间:2013-05-14 05:20:14

标签: ruby mongodb sinatra

我正在开发一个执行一些数据处理的小脚本。如果我尝试ab -n10 -c1(benckmark一个接一个地发送请求),请求需要大约750毫秒。如果我尝试-c2(一次发送两个请求),请求似乎需要> 2s。这是代码的样子:

get '/url/' do
    # ...
    # Images is a mongodb collection
    Images.find({'searchable_data.i' => {
        '$in' => color_codes
    }}).limit(5_000).each do |image|
        found_images << {
            :url => image['url'],
            :searchable_data => image['searchable_data'],
        }
    end
    # ...

从调试开始,我注意到mongo的请求大致在同一时间触发,并且大致在同一时间返回(但是如果我在运行它们时,它们会花费大约2倍的时间)还有,我看过mongo进程的cpu /内存使用情况,mongo甚至没有退缩。这是我连接到mongo的方式:

configure do
    # ...
    server_connection = Mongo::Connection.new(db.host, db.port, :pool_size => 60)
    DB = server_connection.db(db_name)
    DB.authenticate(db.user, db.password) unless (db.user.nil? || db.user.nil?)
    Images = DB[:Images]
end

我有什么问题吗?我无法想象Mongodb驱动程序 坏了。

0 个答案:

没有答案