我已经使用过这个网站多年了,但这是我第一次提出问题,所以如果我做得不对,请随时纠正我。
我们最近遇到了这个问题。 我们有mongos运行一个多个Centos5服务器连接到运行2.4.9的分片replicaset mongodb服务器。
最近我们进行了大量的优化,这增加了我们的吞吐量,虽然此问题曾经发生过很多次,现在变得无法容忍。
在一定数量的成功读取请求之后,php只会出错并反复抛出相同的错误。过了一会儿,它可以恢复。这似乎是基于每个应用服务器,并不会同时影响所有应用服务器。
如果我开始使用mongo并开始一个新的mongos连接,这通常是固定的。 任何关于挖掘方向或指针的想法都表示赞赏,谢谢。 这是我们得到的错误:
Fatal error: Uncaught exception 'MongoCursorException' with message 'localhost:27017: DBClientBase::findN: transport error: internal-mongo-r1-d2-dev.myserver.com:27017 ns: admin.$cmd query: { setShardVersion: "", init: true, configdb: "internal-mongo-c1-dev.myserver.com:27019,internal-mongo-c2-dev.myserver.com:27019,internal-mongo-c3-dev.myserver.com:27019", serverID: ObjectId('52f57ce26ca6543144b077e5'), authoritative: true }' in /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/db/mongo/mongo.inc:185
Stack trace:
#0 /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/db/mongo/mongo.inc(185): MongoCursor->rewind()
#1 /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/db/data.inc(62): MongoCG::get(Array)
#2 /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/data/session/savedsession.inc(30): Data::select('mongo', 'coll_saved_sess...', '_id', 'updated_ss', Array, Array)
#3 /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/data/session/savedsession.inc(20): SavedSession::select(Array)
#4 /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/access/phpsession.inc(32): SavedSession::get_one('fl0uq0nqjbbo4iq...')
#5 [internal function]: PhpSession::read('fl0uq0nqjbbo4iq...')
#6 /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/access/phpsession.inc(16): session_start()
#7 /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/allinc.inc(15): PhpSession::start()
#8 /mnt/home/webapps/cgs-sys/releases/20140207163554/p.php(4): include_once('/mnt/home/webap...')
#9 {main}
thrown in /mnt/home/webapps/cgs-sys/releases/20140207163554/includes/db/mongo/mongo.inc on line 185
答案 0 :(得分:1)
只是想快速跟进。
挖掘后我们发现mongod服务器上的“打开文件”设置较低,并且已经修复,这些错误消失了。答案 1 :(得分:0)
有很多关于类似错误的参考文献,一般的建议是首先考虑TCP keepalive。
除了其他注意事项,您可能还需要查看驱动程序连接中的keepalive设置。
一些链接作为开始的地方:
https://www.google.com.au/search?q=mongodb+transport+error
https://groups.google.com/forum/#!topic/mongodb-user/eod_QH9-VIY