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"})

 

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM