在rails 3.1中使用mongo的ConnectionFailure

时间:2011-11-25 20:55:13

标签: ruby-on-rails mongodb mongoid

我有一个使用Rails 3.1,Mongo 1.4.0,Mongoid 2.2.4的应用程序设置。

我所经历的是:

Mongo::ConnectionFailure: Failed to connect to a master node at localhost:27017

我以前遇到过这个问题,但是在计算机重启时它就消失了......这次它没有。 我不明白,我什么也没做。我只是把我的电脑置于睡眠模式,回家后将其唤醒,然后就在那里。

以下是sudo mongod

的输出
Fri Nov 25 21:47:14 [initandlisten] MongoDB starting : pid=1963 port=27017          dbpath=/data/db/ 64-bit host=xxx.local
Fri Nov 25 21:47:14 [initandlisten] db version v2.0.0, pdfile version 4.5
Fri Nov 25 21:47:14 [initandlisten] git version: 695c67dff0ffc361b8568a13366f027caa406222
Fri Nov 25 21:47:14 [initandlisten] build info: Darwin erh2.10gen.cc 9.6.0 Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; root:xnu-1228.9.59~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_40
Fri Nov 25 21:47:14 [initandlisten] options: {}
Fri Nov 25 21:47:14 [initandlisten] journal dir=/data/db/journal
Fri Nov 25 21:47:14 [initandlisten] recover : no journal files present, no recovery needed
Fri Nov 25 21:47:15 [websvr] admin web console waiting for connections on port 28017
Fri Nov 25 21:47:15 [initandlisten] waiting for connections on port 27017

我可以在终端中与mongo建立联系。 经过两个小时的谷歌搜索,我希望SO社区的能力能够解决这个问题。 如果您需要有关我的应用设置的更多信息,请询问。 谢谢!

2 个答案:

答案 0 :(得分:3)

你看到的是连接超时......这是在长时间不活动之后发生的,或者是你让计算机进入睡眠状态。

您可以更改/增加超时值,但这样您最终无法摆脱连接超时。

一些MongoDB驱动程序允许设置:timeout =>是的,但Mongoid似乎仍有问题 (参见列表中的最后3个链接)

希望这有帮助。

另见:

Mongodb server goes down, how to prevent Rails app from timing out?

MongoDB: What is connection pooling and timeout?

https://github.com/mongodb/mongo-ruby-driver


How can I query mongodb using mongoid/rails without timing out?

http://groups.google.com/group/mongoid/browse_thread/thread/b5c94e7047b42f8a

https://github.com/mongoid/mongoid/issues/455

答案 1 :(得分:2)

尝试将localhost更改为127.0.0.1!