MongoDB 访问超时
MongoDB版本:3.2.6
cacheSizeGB: 32
引擎:WiredTiger
架构:副本集
业务请求MongoDB出现超时现象。
查看MongoDB日志,存在大量的慢更新语句,通过netdata查看服务器监控,排除io问题,发现单核CPU持续出现100%
通过pidstat查看MongoDB进程的CPU使用情况
[root@127-0-0-1~]#pidstat-t-pALL|grepmongod
怀疑mongodb自身刷脏页,通过perf查看mongod进程
[root@127-0-0-1~]#perftop-ppid
再选择 Annotate,找出热点(可以精确到 CPU 指令):(忘记截图,随便截一个)
为了保证线上业务的可用和稳定性,先切换primary为业务提供正常的服务。
解决方法:
1、将版本升级到3.2.10,官方修复了该问题
2、eviction 参数调优:降低eviction_target 或 eviction_dirty_target,让evict 尽早将数据从 wiredtiger 的 cache 刷到操作系统的 page cache,以便提早刷盘。
db.runCommand({setParameter:1,wiredTigerEngineRuntimeConfig:"eviction_dirty_target=5,eviction_target=80"})
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。