情况:
之前我有三台机器:10.10.10.5、10.10.10.6、10.10.10.7
10.10.10.5 运行:
- 配置数据库
- mongoS
- shard3, shard4 mongod 进程(这些是其分片中的主要进程)
10.10.10.6 运行:
- mongoS
- shard3 shard4 mongod 进程(这些在它们的分片中是次要的)
10.10.10.7 运行:
- mongoS
- shard3, shard4 mongod 进程(这些是仲裁者)
我的应用程序连接到 10.10.10.6 mongoS。
一切都运行良好大约一年。然后,10.5 和 10.6 经历了非常重的负载,尤其是 10.6。cpu使用率和平均负载非常高,所以我打算在集群中添加两台新机器。
我创建了两个分片:shard1 和 shard2。新机 10.10.10.8 运行:
- shard1(主要),shard2(次要)
- mongoS
新机 10.10.10.9 运行:
- shard1(次要),shard2(主要)
- mongoS
对于老成员 10.10.10.7,我还添加了 shard1、shard2 仲裁器。
问题是当我添加两台新机器时(使用 addShard 命令),大约 5 小时后它们完成了迁移(虽然我不能确定),然后 10.10.10.6 主机再次出现极高的负载,平均负载约为 90.5(4 cpu)。
同时有很多应用程序对10.10.10.6 mongoS的读写请求,但很少有数据或没有数据写入新的两台机器。我用iostat发现两台新机器几乎没有io字节。
为什么 10.10.10.6 负载如此之大?
以前即使在高峰时段,最高负载也约为 30.5
那么你们能否建议如何解决负载问题并让新机器启动并运行?
编辑:有关我的环境的更多信息
10.5, 10.6, 10.7, 10.8, 10.9都有相同的资源:4CPUS,6g Mem,150G diskspace,netio是光纤。
Shard3 数据大小=16g 和 Shard4 数据大小 15g。
我正在使用 1.8.2