Php 未捕获异常';MongoCursorException';带有消息';localhost:27017:DBClientBase::findN:传输错误

Php 未捕获异常';MongoCursorException';带有消息';localhost:27017:DBClientBase::findN:传输错误,php,mongodb,mongodb-query,mongodb-php,Php,Mongodb,Mongodb Query,Mongodb Php,我已经使用这个网站很多年了,但这是我第一次问问题,所以如果我做得不对,请随时纠正我 我们最近经常遇到这个问题。 我们有运行一个多个Centos5服务器的mongos连接到运行2.4.9的sharded replicaset mongodb服务器 最近我们做了很多优化,提高了我们的吞吐量,虽然这个问题以前经常发生,但现在已经无法忍受了 在一定数量的成功读取请求之后,php只会出错并一次又一次地抛出相同的错误。过一段时间它就会恢复。这似乎是基于每个应用程序服务器,不会同时影响所有应用程序服务器 如果

我已经使用这个网站很多年了,但这是我第一次问问题,所以如果我做得不对,请随时纠正我

我们最近经常遇到这个问题。 我们有运行一个多个Centos5服务器的mongos连接到运行2.4.9的sharded replicaset 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

有很多关于类似错误的参考文献,一般的建议是首先查看TCP keepalive

除了其他注意事项外,您可能还希望查看驱动程序连接中的keepalive设置

一些链接作为起点:


只是想快速跟进一下


深入研究后,我们发现mongod服务器上的“打开的文件”设置很低,已修复,这些错误消失。

发生这种情况时,您的系统负载是什么样子的?看起来您正在执行一个正在尝试提交的剥离或迁移操作,并且阻塞了很长一段时间。如果这种情况再次发生,请查看CPU和磁盘I/O的使用情况,运行db.currentOp(),看看是否可以在某个地方找到堆积或暂停(然后在此处使用该数据进行更新)。这是在负载下发生的,CPU通常在这段时间内运行得很高,但是代码中发生这种情况的地方就在我试图从数据库读取数据的地方,我已经尝试解决这个问题很多小时了,我很快就会发布更新,谢谢你的关注