Page Fault 在大多數資料庫中都會存在,頁面錯誤的定義是當 MongoDB 讀取資料時,發現資料不再常駐的 Cache 中,而需要等待從磁碟讀取資料到記憶體中的頁面,這些頁面就被稱之為 Page Faul。
Page F ault 主要產生問題的是在使用者在讀取,或進行 DML 操作時所需要讀取的資料不再虛擬記憶體中,而需要等待從磁碟中獲取這些資料。
鑑於以上的原理, Page F ault 的問題產生基於空餘的記憶體不足的問題,在系統中使用頁面的情況會經常判斷是否有空餘的頁面空間,基於剩餘的空餘頁面的不足,會頻繁驅逐目前已經不在使用的頁面中的資料,並且載入目前需要使用的頁面,基於記憶體不足的情況,這樣的獲取資訊和驅逐頁面的工作會頻繁的進行。
我們可以基於 db.serverStatus() 來進行相關的資訊的分析工作。
var info = db.serverStatus()info.wiredTiger.cache['pages read into cache']info.wiredTiger.cache['unmodified pages evicted']
通過動態比較上面的兩個系統的監控值,為當前的記憶體不足所引起的問題。如果讀取的 page read into cache 與 unmodified pages evicted 頁面之間存在正比的關係,就很有可能是因為記憶體不足,或查詢中經常有一些大型的獲取資料的查詢並且可能沒有走索引導致。
同時我們還可以通過檢視當前系統的記憶體是否充足,如 FREE 剩餘記憶體多少,是否已經使用 WAP 方式。同時開啟慢查詢分析,檢視是否當前有一些走了全表掃描的語句正在批量執行。
這裡畫一個問題分析的邏輯結構圖如何解決在發現
Page F
aults 後的操作。
db.serverStatus().extra_info.page_faults ,也可以通過 extra_info 命令來獲取系統內告知的 page_faults 的數量。
除此以外,我們還可以通過一些其他的手段來判斷你當前的記憶體是否夠目前的執行使用。
-
可以將當前的經常使用的 collection 進行統計。
-
通過 db.collection.totalIndexSize() 來收集當前熱度很高的索引的大小有多少,如果這些索引已經超過了當前的 wiredtiger cache size 就需要注意當前的記憶體擴容的問題了。
另外根據官方文件中的文字介紹: Ensure Indexes Fit in RAM — MongoDB Manual
Indexes do not have to fit entirely into RAM in all cases. If the value of the indexed field increments with every insert, and most queries select recently added documents; then MongoDB only needs to keep the parts of the index that hold the most recent or "right-most" values in RAM. This allows for efficient index use for read and write operations and minimize the amount of RAM required to support the index.
實際上在 MongoDB 中並不是一定要把整體的索引都裝載到記憶體中的資料庫, M on goDB 僅僅需要保證最近經常訪問的最右側的值在記憶體中即可,對於較大的索引與不充分的記憶體的情況是有一定的幫助和改善的。
關於作者:劉華陽
MongoDB 中文社群成員 ,資料庫愛好者18年,MongoDB 狂熱粉絲,曾經任國產某資料庫產品經理,目前某網際網路餐飲公司資料庫部門負責人,PostGreSQL ACE、Austindatabases 公眾號寫手,熟悉 PostGreSQL、MySQL、MongoDB、SQL Server 等資料庫。
文章閱讀完了,不要滑走!接下來還有線上活動來襲~
騰訊雲資料庫專家工程師帶您走進騰訊雲 MongoDB 的知識海洋,通過其場景的經典案例為你分析解答其中的核心原理及處理方法。
MongoDB 中文社群線上直播
掃描下方二維碼預約直播!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69961190/viewspace-2901822/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 智慧園區三維視覺化地圖開發,如何製作一個園區的電子導航地圖?
- 專案效能優化之用compression-webpack-plugin外掛開啟gzip壓縮,以vue為例
- IDC:2021年全年中國人工智慧軟體及應用市場規模達52.8億美元
- Seo優化+全網營銷的可持續性發展
- TiDB 效能分析&效能調優&優化實踐大全
- 尚普諮詢:2022年全球人工智慧產業研究報告(附下載)
- 華為智慧雲網:全面升級、釋出新品、擴大生態
- 名校AI課推薦 | UC Berkeley《人工智慧導論》
- 解決方案:邁道科技危險化學品企業安全風險智慧化管控平臺
- 智慧數字經營系統是如何助力企業數字化轉型?
- 智慧資料算力如何助推數字浪潮?
- 行業報告| 請查收 2022 MongoDB 資料與創新報告
- 行業案例| 千億級高併發MongoDB叢集在某頭部金融機構中的應用及效能優化實踐(上)
- 行業案例 | MongoDB 在 QQ 小世界 Feed 雲系統中的應用及業務架構優化實踐
- 解決方案| MongoDB PSA 架構痛點以及如何應對?
- 被低估的騰訊雲資料庫
- 如何理解騰訊雲資料庫戰略升級?
- Go 內聯優化能讓程式快多少?