我有一个由3个分片组成的小集群,每个分片都是2个真实节点和1个ARBITER的副本集。在集合上启用了分片,比方说coll_words
,密钥为title
。
其他信息:
rs.slaveOk()
已开启且balancer
已关闭。
此集合的主要分片包含大约13M个文档,其他2个次要分别包含大约5M个文档。
分片之间的平均ping低于1毫秒。从mongos到shard的ping约为3 Millis
'connPoolStats'
命令。
通过像这样的mongos(find()
也很慢)的典型update()
响应:
mongos> db.coll_words.find({title:'りのフランス'}).explain()
{
"clusteredType" : "ParallelSort",
"shards" : {
"rsName/IP1:27017,IP2:27017" : [
{
"cursor" : "BtreeCursor title_1",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 1,
"nscanned" : 1,
"nscannedObjectsAllPlans" : 1,
"nscannedAllPlans" : 1,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
"title" : [
[
"りのフランス",
"りのフランス"
]
]
},
"server" : "SERVER:27017"
}
]
},
"cursor" : "BtreeCursor title_1",
"n" : 1,
"nChunkSkips" : 0,
"nYields" : 0,
"nscanned" : 1,
"nscannedAllPlans" : 1,
"nscannedObjects" : 1,
"nscannedObjectsAllPlans" : 1,
"millisShardTotal" : 0,
"millisShardAvg" : 0,
"numQueries" : 1,
"numShards" : 1,
"indexBounds" : {
"title" : [
[
"りのフランス",
"りのフランス"
]
]
},
"millis" : 51
}
>
这对我来说真的很困惑,为什么最终成本 "millis" : 51
?
我错过了什么吗?任何指针都会很棒。
更新
从mongos到shard的ping约为3 Millis
'connPoolStats'
命令。
"replicaSets" : {
"rs0" : {
"hosts" : [
{
"addr" : "IP1:27017",
"ok" : true,
"ismaster" : false,
"hidden" : false,
"secondary" : true,
"pingTimeMillis" : 3
},
{
"addr" : "IP2:27017",
"ok" : true,
"ismaster" : true,
"hidden" : false,
"secondary" : false,
"pingTimeMillis" : 2
}
],
"master" : 1,
"nextSlave" : 0
},