0

mongo version: 3.0.7
os ram: 256G
os : centos/redhat 6.2

mongod --port 27612 --master --wiredTigerCacheSizeGB 200 --journalCommitInterval 300 --oplogSize 100000 --storageEngine wiredTiger --fork --dbpath /disk1/xxxxx --logpath /disk1/logs/xxxxx_3.0.log --logappend --wiredTigerDirectoryForIndexes --directoryperdb

架构: master-slave

现象:
mongostat 观察master上used 正常情况下均保持在80%,有时会突然快速增大到100%,之后一直保持在100%,性能急剧下降,log里面大量的慢查询(>100ms),导致应用层处理能力下降几个级别。

后来观察达到100%时swap会被用尽(2G), 于是修改wiredTigerCacheSizeGB到默认值(1/2内存), 但跑了一段时间,依旧会达到100%,而且一但达到100%,ar/aw 飙升,qps下降,slow query增多,除了手动重启,性能很难降恢复。

这里一直不清楚为什么wiredtiger cache使用达到80%的时候会不使用或减缓使用, 过段时间又可能增大到100%,什么情况下会导致它达到100%呢?

我们的master上只有一个db一个collection,每个collection包含30亿+的document, 确认过来的请求大多是针对最近单条document的”query/update”。

在mongodb官方的issue上看到了相同的现象,自己也跟了几个comment,但仍然没有找到rootcase

FYI:
https://jira.mongodb.org/browse/SERVER-21782