mongodb insert 错误 ERROR: MessagingPort::call() wrong id got:367 expect:366 解决过程
2016 3 25 更新:
当mongodb 繁忙的时候, 任何含有findN 之类的查询操作, 特别是对没有建索引字段查询, 有概率导致findN超时错误, 然后影响链接, 此后再次使用此链接做查询都会返回 wrong id错误。
2015 11 27 更新:
问题原因
findOne query之类的查询表操作,如果表内数据过大, 会导致查询超时, 一旦超时, 再用此连接做查询就都会报错。
另外发现: findOne 效率上面 应该不如 query 高效, 此结论待进一步验证。
解决办法
在表中加入索引, 延长超时时间, 都有助于消除此错误。
------------------------------------------------------------------------------------
2015 11 26 更新:
应该是 findOne 这个函数导致, 当要查询的表数据量比较大, 10W级别把, 用findOne 查询就有可能出现此错误。
改用 query 可消除此错误
-------------------------------------------------------------------------------------
这个错误网上介绍比较少, 记录一下
最近工作中遇到mongodb insert 时候报错, 现象:
Thu Sep 24 09:19:15.011 ERROR: MessagingPort::call() wrong id got:367 expect:366
toSend op: 2004
response msgid:2931523219
response len: 157
response op: 1
remote: xxxxxxxx
Thu Sep 24 09:19:15.011 Assertion failure false src/mongo/util/net/message_port.cpp 246
日志catch这个错误:
[2015-09-24 08:43:30,069][ERROR] xxx catch boost error:assertion src/mongo/util/net/message_port.cpp:246 - xxx.cpp:xxx
一开始以为是程序错误, 排查过程中发现和存入的数据量有关系, 最后确定是表没建立索引导致。
解决方法: 对要插入数据的表建立索引, 加快insert的查询速度。

浙公网安备 33010602011771号