0

我正在开发一个小脚本来处理一些数据。如果我尝试ab -n10 -c1(一个接一个地发送请求的基准),请求大约需要 750 毫秒。相反,如果我尝试-c2(一次发送两个请求),请求似乎需要 >2 秒。代码如下所示:

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 倍的时间。另外,我看过 cpu /memory 使用 mongo 进程,而 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 驱动程序如此糟糕。

4

0 回答 0