我正在开发一个执行一些数据处理的小脚本。如果我尝试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驱动程序 坏了。