1 / 1
Mar 19

DB ver : 6.0.20
Sharde cluster consists of 4 shards(PSS), 4 config servers and 6 mongoses
Shard Key is “name” : 1, 2, 3, … increasing number

I was doing some performance tests
I just found that shard is not balanced after name:369712 chunk defined
(recent name is over 800,000)

(please ignore “Shard key : memo” and chunk manually splited at 450k, 550k, … I just did it for test after unbalanced state)

Q. Why last chunk is not splitting? It seems clearly unbalanced but autosplit is enabled at sh.status(). I can’t get it

// op for Insert Test for (var i = 401000; i < 420000; i++) { db.test.insertOne({ no: 2, name: i, memo: UUID().toString("hex") + UUID().toString("hex") + UUID().toString("hex") }); } // part of sh.status() (skip) autosplit { 'Currently enabled': 'yes' } (skip) collections: { 'test.test': { shardKey: { name: 1, memo: 'hashed' }, unique: false, balancing: true, chunkMetadata: [ { shard: 'rpt01', nChunks: 23 }, { shard: 'rpt02', nChunks: 29 }, { shard: 'rpt03', nChunks: 22 }, { shard: 'rpt04', nChunks: 22 } ], chunks: [ { min: { name: MinKey(), memo: MinKey() }, max: { name: 1652, memo: MinKey() }, 'on shard': 'rpt01', 'last modified': Timestamp({ t: 1, i: 0 }) }, { min: { name: 1652, memo: MinKey() }, max: { name: 2806, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 1 }) }, { min: { name: 2806, memo: MinKey() }, max: { name: 4442, memo: MinKey() }, 'on shard': 'rpt03', 'last modified': Timestamp({ t: 1, i: 2 }) }, { min: { name: 4442, memo: MinKey() }, max: { name: 5301, memo: MinKey() }, 'on shard': 'rpt04', 'last modified': Timestamp({ t: 1, i: 3 }) }, { min: { name: 5301, memo: MinKey() }, max: { name: 6154, memo: MinKey() }, 'on shard': 'rpt01', 'last modified': Timestamp({ t: 1, i: 4 }) }, { min: { name: 6154, memo: MinKey() }, max: { name: 7208, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 5 }) }, { min: { name: 7208, memo: MinKey() }, max: { name: 8197, memo: MinKey() }, 'on shard': 'rpt03', 'last modified': Timestamp({ t: 1, i: 6 }) }, { min: { name: 8197, memo: MinKey() }, max: { name: 9980, memo: MinKey() }, 'on shard': 'rpt04', 'last modified': Timestamp({ t: 1, i: 7 }) }, (skip) **{ min: { name: 355026, memo: MinKey() }, max: { name: 361257, memo: MinKey() }, 'on shard': 'rpt04', 'last modified': Timestamp({ t: 1, i: 87 }) },** ** { min: { name: 361257, memo: MinKey() }, max: { name: 369712, memo: MinKey() }, 'on shard': 'rpt01', 'last modified': Timestamp({ t: 1, i: 88 }) },** { min: { name: 369712, memo: MinKey() }, max: { name: 450000, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 106 }) }, { min: { name: 450000, memo: MinKey() }, max: { name: 550000, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 108 }) }, { min: { name: 550000, memo: MinKey() }, max: { name: 650000, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 110 }) }, { min: { name: 650000, memo: MinKey() }, max: { name: 750000, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 112 }) }, { min: { name: 750000, memo: MinKey() }, max: { name: 850000, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 114 }) }, { min: { name: 850000, memo: MinKey() }, max: { name: 950000, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 116 }) }, { min: { name: 950000, memo: MinKey() }, max: { name: MaxKey(), memo: MaxKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 117 }) } ], tags: [] } } } // db.test.getShardDistribution() [direct: mongos] test> db.test.getShardDistribution() Shard rpt02 at rpt02/48:30201,48:30202,48:30203 { data: '96.33MiB', docs: 738875, chunks: 29, 'estimated data per chunk': '3.32MiB', 'estimated docs per chunk': 25478 } --- Shard rpt01 at rpt01/48:30101,48:30102,48:30103 { data: '15.39MiB', docs: 240432, chunks: 23, 'estimated data per chunk': '685KiB', 'estimated docs per chunk': 10453 } --- Shard rpt03 at rpt03/48:30301,48:30302,:30303 { data: '5.91MiB', docs: 116559, chunks: 22, 'estimated data per chunk': '275KiB', 'estimated docs per chunk': 5298 } --- Shard rpt04 at rpt04/48:30401,48:30402,48:30403 { data: '5.43MiB', docs: 104894, chunks: 22, 'estimated data per chunk': '253KiB', 'estimated docs per chunk': 4767 } --- Totals { data: '123.08MiB', docs: 1200760, chunks: 96, 'Shard rpt02': [ '78.26 % data', '61.53 % docs in cluster', '136B avg obj size on shard' ], 'Shard rpt01': [ '12.51 % data', '20.02 % docs in cluster', '67B avg obj size on shard' ], 'Shard rpt03': [ '4.8 % data', '9.7 % docs in cluster', '53B avg obj size on shard' ], 'Shard rpt04': [ '4.41 % data', '8.73 % docs in cluster', '54B avg obj size on shard' ] } `