移动块时发生 MongoDB 套接字异常

移动块时发生 MongoDB 套接字异常

我的 mongodb 数据库集群中有 2 个分片,1 个 mongos 服务器。我总共有 8 个服务器,其中一个副本集有 5 个,另一个有 3 个。我有一个跨集群分片的单个集合,但最近当我尝试移动块时,我收到了套接字异常。

所有服务器都在 EC2 上运行,大多数服务器位于同一可用区。发送服务器和接收服务器位于不同的可用区。

以下是日志的一些摘录:

发送服务器:

5 月 20 日星期五 07:53:28 [conn6158] moveChunk 数据传输进度:{active:false,ns:“social_advantage_analytics.edges”,来自:“slytherin/draco:27018”,最小值:{_id:“100000007993210_116269473289”},最大值:{_id:“100000012316922_167580256615048”},状态:“失败”,errmsg:“套接字异常”,计数:{克隆:0,克隆字节数:0,追赶:0,稳定:0},确定:1.0} 我的内存使用量:0

5 月 20 日星期五 07:53:28 [conn6158] 警告:moveChunk 传输数据时出错,导致迁移中止:{active:false,ns:“social_advantage_analytics.edges”,来自:“slytherin/draco:27018”,最小值:{_id:“100000007993210_116269473289”},最大值:{_id:“100000012316922_167580256615048”},状态:“失败”,errmsg:“套接字异常”,计数:{克隆:0,克隆字节数:0,追赶:0,稳定:0},确定:1.0}

接收服务器:

5 月 20 日星期五 14:51:10 [migrateThread] 即将记录元数据事件:{ _id:“george-2011-05-20T14:51:10-293”,服务器:“george”,clientAddr:“(NONE)”,时间:新日期 (1305903070637),内容:“moveChunk.to”,ns:“social_advantage_analytics.edges”,详细信息:{最小值:{ _id:“100000007993210_116269473289” },最大值:{ _id:“100000012316922_167580256615048” },注释:“中止” } }

5 月 20 日星期五 14:51:10 [migrateThread] 错误:迁移失败:套接字异常

分片服务器:

5 月 20 日星期五 07:53:05 [Balancer] balacer 移动失败:{原因:{active:false,ns:“social_advantage_analytics.edges”,来自:“slytherin/draco:27018”,最小值:{_id:“100000007993210_116269473289”},最大值:{_id:“100000012316922_167580256615048”},状态:“失败”,errmsg:“套接字异常”,计数:{克隆:0,克隆字节数:0,追赶:0,稳定:0},确定:1.0},errmsg:“数据传输错误”,确定:0.0}从:pansy 到:percy 块:{_id: “social_advantage_analytics.edges-ID“100000007993210_116269473289”, lastmod:时间戳 90000|354,ns:“social_advantage_analytics.edges”,最小值:{_id:“100000007993210_116269473289”},最大值:{_id:“100000012316922_167580256615048”},碎片:“pansy”}

答案1

这是一个较老的问题,但需要提供一些重要信息:

  • 您正在使用哪个版本的 MongoDB?
  • 集群中的每个服务器是否可以通过指定端口 (27018) 与集群中的其他每个服务器进行通信?这包括数据库分片和 mongos (平衡器)。

  • 分片必须相互通信才能复制数据,并且由于发送节点和接收节点位于不同的区域,它们是否属于同一安全组?是否有本地防火墙阻止通信?

  • 考虑检查每台服务器上 mongod 进程的打开文件描述符数量。服务器代​​码强制执行 20k 的硬性最大值,但通常还有另一个限制。以下是一些可提供帮助的命令:

    lsof -p <pid of mongod> | wc -l
    
    su - mongod # or whatever user mongod is running as
    ulimit -n # => some systems default to 1024
    

相关内容