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"})
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-2709931/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- github 訪問超時Github
- Mongodb訪問控制MongoDB
- MongoDB 超時設定MongoDB
- 記一次域名服務訪問超時問題
- mongoDB 3.0 安全許可權訪問MongoDB
- Python連線訪問mongodb副本集PythonMongoDB
- 關於在執行java連線MongoDB時遇到的連線超時問題JavaMongoDB
- django 內建server 外網不能訪問, 報連線超時DjangoServer
- docker下拉超時,docker無法訪問,最新解決方案(2024.08.09)Docker
- MongoDB最簡單的入門教程之二 使用nodejs訪問MongoDBMongoDBNodeJS
- Holer實現MongoDB資料庫外網訪問MongoDB資料庫
- MongoDB最簡單的入門教程之五-通過Restful API訪問MongoDBMongoDBRESTAPI
- Oracle如何診斷遠端訪問資料庫慢/超時等問題小結Oracle資料庫
- 如何從公網訪問內網MongoDB資料庫內網MongoDB資料庫
- MongoDB常見問題解答:時間與時區MongoDB
- 分散式文件儲存資料庫之MongoDB訪問控制分散式資料庫MongoDB
- 如何從 WSL2 訪問 Windows 10 host上的MongoDBWindowsMongoDB
- 解決MongoDB儲存時間時差的問題MongoDB
- Mongodb 效能監控工具FreeMonitoring,mongostat,mongotop,Profiler,索引,分片,事務超時,MongoDB調優MongoDB索引
- mongodb c driver bson的巢狀訪問與層次結構MongoDB巢狀
- Java如何實現延時訪問Java
- libevent設定超時後取消超時(bufferevent_set_timeouts取消超時無效問題)
- 介面超時問題彙總
- JQ AJAX 超時問題 timeout
- 日常問題排查-呼叫超時
- Laravel MongoDB 時間區間查詢的問題LaravelMongoDB
- MongoDB 在windows伺服器安裝部署與遠端訪問配置MongoDBWindows伺服器
- 解決 go get 超時問題Go
- 同時訪問內外網解決方案
- 課時45:魔法方法:屬性訪問
- 如何解決公網無法訪問阿里雲ECS搭建的MongoDB服務阿里MongoDB
- 大請求、請求超時問題
- 解決代理連線超時問題
- SQL Server 查詢超時問題排查SQLServer
- PHP操作MongoDB時的整數問題及對策UQPHPMongoDB
- JDBC用ResultSet訪問大量資料時會遇到的問題JDBC
- Gitlab怎麼使用訪問令牌訪問Gitlab
- 訪問統計(排除爬蟲訪問)爬蟲