Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 添加shardcollection后mongos速度变慢_Performance_Mongodb_Sharding - Fatal编程技术网

Performance 添加shardcollection后mongos速度变慢

Performance 添加shardcollection后mongos速度变慢,performance,mongodb,sharding,Performance,Mongodb,Sharding,所以我们有一个大的收藏,大约有1亿张唱片。我们需要切分,我正在做一些测试。我发现在对切分的集合运行查询时,即使只有一个切分,性能也会下降 我启动了一个mongos,并将mongod添加到shardcluster中,因此基本上只有一台服务器。当我使用大约230000个返回值执行.explain查询时,响应时间大约为800ms,这与我直接在mongod服务器上查询时的响应时间相同。 我为这个特定集合启用了分片,响应时间仍然是800ms。 现在,我为集群启用了共享并添加了一个shard密钥,对于mon

所以我们有一个大的收藏,大约有1亿张唱片。我们需要切分,我正在做一些测试。我发现在对切分的集合运行查询时,即使只有一个切分,性能也会下降

我启动了一个mongos,并将mongod添加到shardcluster中,因此基本上只有一台服务器。当我使用大约230000个返回值执行.explain查询时,响应时间大约为800ms,这与我直接在mongod服务器上查询时的响应时间相同。 我为这个特定集合启用了分片,响应时间仍然是800ms。 现在,我为集群启用了共享并添加了一个shard密钥,对于mongos上完全相同的查询,响应时间增加到1400ms。当我直接在mongod上查询时,响应时间仍然是800毫秒。另外,对未分片的集合的所有其他查询在mongos和mongod上显示相同的响应时间,但一旦对集合进行分片,响应时间将显著增加近一倍


发生了什么?为什么响应时间明显变差?这将帮助我们回到碎片。我们需要两个分片才能在一台大型服务器上获得相同的性能,这不应该是分片的本质…

不确定您是否需要以下情况。对于第一个查询,mongos将始终转到配置服务器获取该queryshard键的碎片信息,稍后它将缓存这些信息。您能否在两种情况下尝试运行相同的查询两次,然后再次尝试比较“毫秒”值。谢谢您的回复。我多次运行相同的查询,得到了一致的结果。查询越大,结果越多,差异就越大,通常约为40-50%。使用非常快速的查询对其进行了测试,但响应时间差异相对相同。还尝试了非切分收集,但这些响应时间在mongos或mongod上是相同的。我分析了mongos和mongod的CPU使用情况,发现当查询来自mongos时,mongod的CPU使用量是直接在mongod上运行时的两倍。在这两种情况下都使用索引