【发布时间】:2014-02-08 22:38:24
【问题描述】:
我已经使用这个网站多年,但这是我第一次提出问题,如果我做得不对,请随时纠正我。
我们最近经常遇到这个问题。 我们有一个运行多个 Centos5 服务器的 mongos,连接到运行 2.4.9 的分片副本集 mongodb 服务器。
最近我们做了很多优化,提高了我们的吞吐量,虽然这个问题过去经常发生,但现在已经变得无法容忍了。
在成功读取一定数量的请求后,php 只会出错并一遍又一遍地抛出相同的错误。过一段时间就可以恢复了。这似乎是基于每个应用服务器的,不会同时影响所有应用服务器。
如果我 pkill 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
【问题讨论】:
-
发生这种情况时,您的系统负载是什么样的?看来您正在尝试提交的拆分或迁移,并且它阻塞了很长时间。如果再次发生这种情况,请查看 CPU 和磁盘 I/O 使用情况,运行 db.currentOp(),然后查看是否可以在某处找到堆积或停止(然后在此处使用该数据进行更新)。
-
好吧,这发生在负载下,CPU 通常在这段时间内运行得很高,但是代码中发生这种情况的地方是我试图从数据库中读取的地方,我一直在尝试解决这个问题问题已经好几个小时了,我很快就会发布更新,感谢您的关注
标签: php mongodb mongodb-query mongodb-php