Я создал библиотеку, которая будет записывать события в MongoDB из моего приложения на Rails.Я использую версию 1.4.0 монго гем и Rails 3.0 с Ruby 1.8.7.Соответствующий код:
def new_event(collection, event)
@conn = Mongo::Connection.new("localhost", 27017, :pool_size => 5, :pool_timeout => 5)
@conn.db("event").collection(collection).insert(event)
@conn.close
end
Это прекрасно работает для записи новых событий, происходящих на сайте.Тем не менее, мне также нужно заполнить базу данных старыми событиями.Итак, я запускаю скрипт, который в основном делает это:
SomeModel.find_each do |model|
Tracker.new.new_event("model_event", { ... info from model ... })
end
Я пытаюсь что-то засыпать порядка 50 тыс. Событий.Когда скрипт запускается, я вижу следующее:
Tue Sep 27 23:45:20 [initandlisten] waiting for connections on port 27017
Tue Sep 27 23:46:20 [clientcursormon] mem (MB) res:12 virt:78 mapped:0
Tue Sep 27 23:48:49 [initandlisten] connection accepted from 127.0.0.1:51006 #1
Tue Sep 27 23:49:03 [conn1] remove event.application 103ms
Tue Sep 27 23:49:12 [conn1] remove event.listing 127ms
Tue Sep 27 23:49:20 [clientcursormon] mem (MB) res:37 virt:207 mapped:128
Tue Sep 27 23:51:44 [initandlisten] connection accepted from 127.0.0.1:48103 #2
Tue Sep 27 23:51:44 [conn2] end connection 127.0.0.1:48103
Tue Sep 27 23:51:44 [initandlisten] connection accepted from 127.0.0.1:48104 #3
Tue Sep 27 23:51:44 [conn3] end connection 127.0.0.1:48104
Tue Sep 27 23:51:44 [initandlisten] connection accepted from 127.0.0.1:48105 #4
Tue Sep 27 23:51:44 [conn4] end connection 127.0.0.1:48105
Tue Sep 27 23:51:44 [initandlisten] connection accepted from 127.0.0.1:48106 #5
Tue Sep 27 23:51:44 [conn5] end connection 127.0.0.1:48106
Порты (127.0.0.1:XXXXX) и (что я предполагаю) номера пула соединений продолжают увеличиваться, пока в конце концов я не получу это исключение изскрипт ruby:
Failed to connect to a master node at localhost:27017
/var/bundler/turtle/ruby/1.8/gems/mongo-1.4.0/lib/../lib/mongo/connection.rb:526:in `connect'
/var/bundler/turtle/ruby/1.8/gems/mongo-1.4.0/lib/../lib/mongo/connection.rb:688:in `setup'
/var/bundler/turtle/ruby/1.8/gems/mongo-1.4.0/lib/../lib/mongo/connection.rb:104:in `initialize'