MongoDB 访问超时
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"})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」