MONGO DB too many mongodb page_faults 报错排查step by step的示例分析

这篇文章给大家介绍MONGO DB too many mongodb page_faults  报错排查step by step的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

早上运维的同学, morning call,说zabbix的 MONGO 监控报警,图片传给我,报的错误是 too many mongodb page_faults.

本来 page_faults 引起的根本原因就是瞬时MONGO 从磁盘读取了大量的数据,引起page_faults。

这时候有的MONGO DBA 会马上反应,看看有没有没有全COLLECION的扫描,没有良好的索引,大量的SCAN ,会造成这个问题。

但这个问题奇葩的地方就在于,这个报错的 PAGE_FAULTS机器,并没有查询(并非primary 库),既然么有查询,怎么来的page_faults。

官方的解释截图

MONGO DB too many mongodb page_faults  报错排查step by step的示例分析

马上去确认一下,到底这个刚运行的MONGO 的standy库的 page_faults 到底是不是有问题。

下面是出现问题的机器,(别笑新机器当然没有那么多page_faults)

MONGO DB too many mongodb page_faults  报错排查step by step的示例分析

,对比主机的 page_faults

MONGO DB too many mongodb page_faults  报错排查step by step的示例分析

果然,这个问题机器的page_faults果然多了。

另外看看内存的状况,果不其然,已经开始使用SWAP了

MONGO DB too many mongodb page_faults  报错排查step by step的示例分析

通过 mongostat 来查看,系统并没有什么不正常

MONGO DB too many mongodb page_faults  报错排查step by step的示例分析

在查看日志

MONGO DB too many mongodb page_faults  报错排查step by step的示例分析

可以看到,日志已经指向 advisoryHostFQDNS,并且通过日志,发现一直有这个错误,并且执行一次命令要80秒。

经过查询,可能原因有几个,因为这个advisoryHostFQDNs 是集群中每台MONGODB 机器的域名解析,这里查询这个信息是从 OPS MANANGER 而来的,说明我们这边可能在解析域名上有问题。

这里解决问题的方法:在每台机器,及OPS MANANGE 上 HOSTS 上填写所有集群MONGODB的机器名,而不在通过DNS 来解析,看看能不能解决上述的问题。

关于MONGO DB too many mongodb page_faults  报错排查step by step的示例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。