Mongodb MongoSharding-请求分发

Mongodb MongoSharding-请求分发,mongodb,node.js,asynchronous,mongo-shell,Mongodb,Node.js,Asynchronous,Mongo Shell,关于:请求分发问题和系统问题 最近,我在生产服务器中配置了MongoDBShared,下面给出了详细信息 我使用了3台单独的机器进行mongo切分配置 第一台机器-(shard1主+shard2次+shard2仲裁器)+配置 第二台机器-(shard2主+shard1次+shard1仲裁器)+配置 第三台机器-配置 我有不止一个NODE.JS服务器。因此,我在每个节点服务器中启动了块大小为5MB的mongos(例如,在每个节点服务器中使用6个节点服务器和6个mongos instant) 在

关于:请求分发问题和系统问题

最近,我在生产服务器中配置了MongoDBShared,下面给出了详细信息

  • 我使用了3台单独的机器进行mongo切分配置

    • 第一台机器-(shard1主+shard2次+shard2仲裁器)+配置
    • 第二台机器-(shard2主+shard1次+shard1仲裁器)+配置
    • 第三台机器-配置
  • 我有不止一个NODE.JS服务器。因此,我在每个节点服务器中启动了块大小为5MB的mongos(例如,在每个节点服务器中使用6个节点服务器和6个mongos instant)

  • 在我在mongos中配置了sharding设置之后,创建了一个数据库,并自动将其作为“shard2”中的主数据库

  • 但我的问题是,我无法将请求分发到NODE.JS中获取的两个分片,因为它会自动将shard2作为该数据库的主分片。因此,所有的请求都只在shard2瞬间命中。所以,第二台机器因负载问题而陷入麻烦,CPU使用率也越来越高

    请分享您对解决此类问题的意见和建议

    简图
    CLIENT->NODE.JS SERVER->MONGODB[第一台机器+第二台机器+第三台机器]

    您是否指定了一台机器?

    这是预期的。默认情况下,所有数据都会转到数据库的主数据库,直到它开始拆分数据为止。一旦分割,它将被定向到正确的碎片,而不是主碎片,但分割操作必须已经发生。也可以预裂。请参见

    是否有任何方法可以修改您的问题以更清楚地描述问题?您确定有足够的数据吗?即使是5MB的低块大小(请记住,这只是10gen建议的1/13,除非您完全确定需要此值,否则我将坚持默认值),在切分开始之前,该集合中必须至少有50MB的数据。我在该数据库的每个集合中指定了一个切分键。但每个集合都没有记录和空集合。因为它是我们已经实现的一个新特性,所以基于用户事务,它将在将来的集合中填充。