【问题标题】:Uncaught exception 'MongoCursorException' with message 'localhost:27017: DBClientBase::findN: transport error未捕获的异常 'MongoCursorException' 带有消息 'localhost:27017: DBClientBase::findN: 传输错误
【发布时间】: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


【解决方案1】:

只是想快速跟进。

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

【讨论】:

    【解决方案2】:

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

    除了其他注意事项之外,您可能还需要查看驱动程序连接中的保持连接设置。

    一些链接作为开始的地方:

    https://www.google.com.au/search?q=mongodb+transport+error

    https://groups.google.com/forum/#!topic/mongodb-user/eod_QH9-VIY

    https://jira.mongodb.org/browse/SERVER-3446

    https://www.google.com.au/search?q=mongodb+transport+error

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 2012-01-27
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      • 2013-08-24
      • 2012-04-25
      相关资源
      最近更新 更多