1、dirty百分比
db.serverStatus().wiredTiger.cache['tracked dirty bytes in the cache']
这个值是脏数据驻留在wiredTiger cacheSize 里面的脏数据大小,如果这个值对比wiredTiger cacheSize 的设置的内存值 超过 5%的容量,同时通过工具 mongostat持续观察其中的指标dirty如果此时你的dirty持续在20%,会得出两个可能:
- 你的磁盘系统不能满足当前的业务在MONGODB中的使用
- 你的内存有必要进行添加了
2、缓存命中率
- 通过定时获取下面两个参数的增量,然后进行计算
db.serverStatus().wiredTiger.cache['pages requested from the cache']
db.serverStatus().wiredTiger.cache['pages read into cache']
我们以 2秒为一个取数点,将 page requested from the cache 的值减去上一个 2秒的值,作为一个增量,通过针对 page read into cache 也是一样的处理方式。然后将第一个值 / 第二个值 * 100 = buffer cache hit ratio 来查看当前数据在cache 中的命中率。
3、磁盘使用率
- 观察读写延迟和util%通常都可以观测到较大的磁盘压力,需要看iostat指标的含义看这个吧:https://blog.csdn.net/weixin_67470255/article/details/124090396
4、oplog集合的大小
5、备份方案
- 延迟同步
cfg=rs.conf();
cfg.members[1].priority=0 # 不用在选举
cfg.members[1].slaveDelay=3600 # 延迟时间
rs.reconfig(cfg);
- 定时全量备份
mongodb以及周边基础知识
- mongodb 默认设置内存的方式:(实际的内存减 - 1GB)/ 2 ,原因:MONGODB 的数据是压缩应存储到磁盘上的,所以数据需要缓冲到LINUX 的系统缓冲CACHE 中,加速文件的解压和获取
- mongostat字段含义:https://www.lmlphp.com/user/16517/article/item/575098/,看这个链接吧,懒得复制了;不过,这句话应该是错的: conn: 打开连接的总数,是qr,qw,ar,aw的总和,截图为证吧。。
1673258568(1).png
网友评论