У меня есть два осколки 3 реплики машин каждый (одни и те же данные)Почему производительность mongodb настолько сильно отличается от двух похожих осколков?
Куски являются достаточно хорошо распределены:
Shard events at events/xxx:27018,yyy:27018 data : 6.82GiB docs : 532402 chunks : 59 estimated data per chunk : 118.42MiB estimated docs per chunk : 9023 Shard events2 at events2/zzz:27018,qqq:27018 data : 7.3GiB docs : 618783 chunks : 66 estimated data per chunk : 113.31MiB estimated docs per chunk : 9375 Totals data : 14.12GiB docs : 1151185 chunks : 125 Shard events contains 48.29% data, 46.24% docs in cluster, avg obj size on shard : 13KiB Shard events2 contains 51.7% data, 53.75% docs in cluster, avg obj size on shard : 12KiB
Тем не менее, основной на одной стороне имеет почти 4x в vmsize и блокировать%, близкую к 90% (против 2% с другой), а также намного более высокий показатель btree. Это приводит к тому, что на этой машине происходит большое количество курсоров.
Оба осколка должны получать похожие типы запросов, а значения opcounter довольно близки.
Как я могу диагностировать это?
UPDATE неэффективная сторона, как представляется, используя Humongous объем памяти для данных, в том числе 100x пространство для индекса:
"ns" : "site_events.listen",
"count" : 544213,
"size" : 7500665112,
"avgObjSize" : 13782.59084586366,
"storageSize" : 9698657792,
"numExtents" : 34,
"nindexes" : 3,
"lastExtentSize" : 1788297216,
"paddingFactor" : 1.0009999991378065,
"systemFlags" : 1,
"userFlags" : 1,
"totalIndexSize" : 4630807488,
"indexSizes" : {
"_id_" : 26845184,
"uid_1" : 26664960,
"list.i_1" : 4577297344
},
против
"ns" : "site_events.listen",
"count" : 621962,
"size" : 7891599264,
"avgObjSize" : 12688.233789202555,
"storageSize" : 9305386992,
"numExtents" : 24,
"nindexes" : 2,
"lastExtentSize" : 2146426864,
"paddingFactor" : 1.0000000000917226,
"systemFlags" : 1,
"userFlags" : 1,
"totalIndexSize" : 45368624,
"indexSizes" : {
"_id_" : 22173312,
"uid_1" : 23195312
},
Возможно, что выбор бедных осколков - это фактор (окутанный на uid), но opcounters не поддерживают это. На самом деле плохо работающий осколок должен содержать менее активные учетные записи. –
На самом деле это, вероятно, вопрос dba – Sammaye
Хотя я бы удалил осколок, сделаю ремонт на основном осколке, а затем прочитал осколок – Sammaye