我的 mongodb 数据库集群中有 2 个分片,有 1 个 mongos 服务器。我总共有 8 个服务器,其中一个副本集有 5 个,另一个有 3 个。我有一个跨集群分片的集合,但是最近当我尝试块移动时,我收到了套接字异常。
所有服务器都在 EC2 上运行,其中大部分位于同一可用区。发送服务器和接收服务器位于不同的可用区。
以下是日志的一些摘录:
发送服务器:
5 月 20 日星期五 07:53:28 [conn6158] moveChunk 数据传输进度:{ active: false, ns: "social_advantage_analytics.edges", from: "slytherin/draco:27018", min: { _id: "100000007993 max2109_4,16" : { _id: "100000012316922_167580256615048" }, state: "fail", errmsg: "socket exception", counts: { cloned: 0, clonedBytes: 0, catchup: 0, stable: 0 }, ok: used: 0 } 0
5 月 20 日星期五 07:53:28 [conn6158] 警告:传输数据时 moveChunk 错误导致迁移中止:{ active: false, ns: "social_advantage_analytics.edges", from: "slytherin/draco:27018", min: { _id: " 100000007993210_116269473289" }, 最大值: { _id: "100000012316922_167580256615048" }, 状态: "fail", errmsg: "socket exception", counts: }, 0 cloned: catchup: 0 }
接收服务器:
5 月 20 日星期五 14:51:10 [migrateThread] 即将记录元数据事件:{ _id: "george-2011-05-20T14:51:10-293", server: "george", clientAddr: "(NONE)",时间:新的Date(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 [平衡器] 平衡器移动失败:{ 原因:{ 活动:假,ns:“social_advantage_analytics.edges”,来自:“slytherin/draco:27018”,分钟:{ _id:“1000000079932109_4732” , max: { _id: "100000012316922_167580256615048" }, state: "fail", errmsg: "socket exception", counts: { cloned: 0, clonedBytes: 0, catchup: 0, stable: 0 }, }, errmsg.0 :“数据传输错误”,确定:0.0}从:三色堇到:percy块:{_ id:“social_advantage_analytics.edges- id “100000007993210_116269473289”,lastmod:时间戳90000:354,minsadlytics. {_id:“100000007993210_116269473289”},最大值:{_id:“100000012316922_167580256615048”},碎片:“三色堇”}
这是一个较旧的问题,但需要提供的一些重要信息是:
集群中的每台服务器是否可以通过分配的端口 (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
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1648 次 |
| 最近记录: |