我有一个由 3 个分片组成的小集群,每个分片都是 2 个真实节点和 1 个仲裁者的副本集。对集合启用分片,比如说coll_words
,键是title
.
其他信息:
rs.slaveOk()
开启和balancer
关闭。该集合的主分片包含大约 13M 文档,另外 2 个辅助分片每个包含大约 5M。
分片之间的平均 ping 低于 1 毫秒。从 mongos 到 shard 的 ping
3 Millis
与'connPoolStats'
命令有关。
find()
通过像这样的 mongos的典型响应(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 的 ping3 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
},