-
Type:
Bug
-
Resolution: Done
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
ALL
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Performing a synthetic workload I noticed a very different number of chunks and an error rate in the balancer when using the option:
Below are the test results:
# Default configuration
mongos> sh.status(0 )mongos> sh.status(0 )
--- Sharding Status ---
sharding version:
{ "_id" : 1, "minCompatibleVersion" : 5, "currentVersion" : 6, "clusterId" : ObjectId("5f74ba2926ac7490e83e7c65") }
shards:
{ "_id" : "shard01", "host" : "shard01/localhost:37018,localhost:37019,localhost:37020", "state" : 1 }
{ "_id" : "shard02", "host" : "shard02/localhost:37021,localhost:37022,localhost:37023", "state" : 1 }
{ "_id" : "shard03", "host" : "shard03/localhost:37024,localhost:37025,localhost:37026", "state" : 1 }
active mongoses: "4.0.20-13" : 1
autosplit:
Currently enabled: yes
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 0
Migration Results for the last 24 hours:
16 : Success
129 : Failed with error 'aborted', from shard01 to shard03
databases:
{ "_id" : "config", "primary" : "config", "partitioned" : true }
config.system.sessions
shard key: { "_id" : 1 }
unique: false
balancing: true
chunks:
shard01 1
{ "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : shard01 Timestamp(1, 0)
{ "_id" : "vinnie", "primary" : "shard01", "partitioned" : true, "version" : { "uuid" : UUID("4bd88f33-481a-47d2-86c6-6a1fad5ed677"), "lastMod" : 1 } }
vinnie.companies
shard key: { "_id" : 1 }
unique: false
balancing: true
chunks:
shard01 10
shard02 9
shard03 9
too many chunks to print, use verbose if you want to force print
mongos> db.companies.count()
4813948
And with the settings in place:
# Using the config below
use config;
db.settings.save( { _id:"chunksize", value: 64 });
db.settings.save( { "_id" : "balancer", "_secondaryThrottle" : { "w" : "majority" }, "_waitForDelete" : true} )
mongos> sh.status()
--- Sharding Status ---
sharding version: { "_id" : 1, "minCompatibleVersion" : 5, "currentVersion" : 6, "clusterId" : ObjectId("5f74ccd17a58008967dd6fbf") }
shards:
{ "_id" : "shard01", "host" : "shard01/localhost:37018,localhost:37019,localhost:37020", "state" : 1 }
{ "_id" : "shard02", "host" : "shard02/localhost:37021,localhost:37022,localhost:37023", "state" : 1 }
{ "_id" : "shard03", "host" : "shard03/localhost:37024,localhost:37025,localhost:37026", "state" : 1 }
active mongoses: "4.0.20-13" : 1
autosplit:
Currently enabled: yes balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 0
Migration Results for the last 24 hours:
64 : Success
databases:
{ "_id" : "config", "primary" : "config", "partitioned" : true }
config.system.sessions
shard key: { "_id" : 1 }
unique: false
balancing: true
chunks:
shard01 1
{ "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : shard01 Timestamp(1, 0)
{ "_id" : "vinnie", "primary" : "shard01", "partitioned" : true, "version" : { "uuid" : UUID("94232603-84da-43e0-bef7-783db0019696"), "lastMod" : 1 } }
vinnie.companies
shard key: { "_id" : 1 }
unique: false
balancing: true
chunks:
shard01 33
shard02 34
shard03 34
too many chunks to print, use verbose if you want to force print
mongos> db.companies.count()
4442950
It seems like an issue since Mongo "gives up" about splitting the chunk and I'm afraid this can lead to jumbo chunks. On the other hand, with the settings enabled, I can observe an increased load on the shards (probably due to the write concern majority).