ITPub博客

首页 > 数据库 > NoSQL > MongoDB 访问超时

MongoDB 访问超时

原创 NoSQL 作者:haoge0205 时间:2020-08-07 11:26:22 0 删除 编辑

MongoDB版本:3.2.6

cacheSizeGB: 32

引擎:WiredTiger

架构:副本集

业务请求MongoDB出现超时现象。

查看MongoDB日志,存在大量的慢更新语句,通过netdata查看服务器监控,排除io问题,发现单核CPU持续出现100%


通过pidstat查看MongoDB进程的CPU使用情况

[root@127-0-0-1 ~]# pidstat -t -p ALL |grep mongod

怀疑mongodb自身刷脏页,通过perf查看mongod进程

[root@127-0-0-1 ~]# perf top -p pid

再选择 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"})


    


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28939273/viewspace-2709931/,如需转载,请注明出处,否则将追究法律责任。

上一篇: pidstat
下一篇: Linux dd 命令
请登录后发表评论 登录
全部评论

注册时间:2013-11-28

  • 博文量
    300
  • 访问量
    1782855