中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MONGODB大內存參數的調節以及checkpoint與性能的關系是怎樣的

發布時間:2021-09-29 09:36:58 來源:億速云 閱讀:144 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關MONGODB大內存參數的調節以及checkpoint與性能的關系是怎樣的,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

每種數據庫本身都有自身的特性,同時面臨的業務不同,也會導致每種數據庫需要進行調節,來滿足某種業務的需求.

大部分場景下,對于MONGODB的配置上都比較粗暴,這當然是相對于 PG, MYSQL 而言的,各種細微的調整,對于某些參數的琢磨. 那么實際上MONGODB 本身的參數也并不是不需要琢磨,他就能適應各種情況, 量變到質變的道理大家都懂.

這里重溫一下文檔的內容

1 在MONGODB 3.4 默認使用 50%的內存在數據庫中有1G 內存及以上的情況,而如果在不足1G 內存的情況下使用 256MB的方式為MONGODB 提供內存服務. 

問題,為什么是50% , 而不是和MYSQL 一樣的60% - 80%,也就是說越大越好,這里如果使用過POSTGRESQL 則可能會理解MONGODB 的為什么要50%而不是更大,因為他們都要基于LINUX 的緩沖機制來進行相關的數據處理工作.

PG就不在贅述,而MONGODB 主要使用LINUX的緩沖技術的主要原因是數據壓縮,使用過MONGODB的人都知道MONGODB對數據壓縮后和實際數據的大小之間的比率還是比較大的,這樣會節省數據的存儲空間和以及相關的處理數據的成本.

但任何數據在進行處理之前都需要解壓縮,而解壓縮如果是從磁盤到內存則速度和相關的性能消耗都不會太低,則MONGODB選擇了LINUX 的緩沖cache作為解壓縮和壓縮的一個環境. 

問題1  MONGODB 到底多長時間checkpoint一次,下面做一個 test 來回答這個問題

從圖中就可以很明確的看到這個問題,時間是1分鐘,1分鐘進行一次checkpoint 的操作.

這邊通過程序,對MONGODB 進行壓力測試,產生3000個連接,每個連接寫入200000 行數據.

這里就會產生一個矛盾,如果我內存大,例如512G ,并且使用一半的內存256G,然后進行臟頁的刷新,每隔60秒將數據刷入到磁盤. 

那么我們會有幾個問題需要考慮,大量的數據寫入,我們有沒有時間將這些內存的數據在1分鐘內刷入到磁盤中,如果刷不完會怎樣.磁盤的壓力在此刻是不是會壓力山大. 那這個是不是算一個在某些MONGODB 數據庫中在承受大量寫時需要進行相關的調優需要考慮的事情.

其中重要的eviction_trigger  是保證當使用內存達到多少百分比,開始將內存的數據刷入到磁盤中, eviction_target 則是當內存的占比只要大于設置的值默認80% 就一直將數據刷入到磁盤中.

eviction_targetcontinue evicting until the cache has less total memory than the value, as a percentage of the total cache size. Must be less than eviction_trigger.an integer between 10 and 99; default 80.
eviction_triggertrigger eviction when the cache is using this much memory, as a percentage of the total cache size.

在高并發寫入,并且內存不足的情況下,主庫崩潰了,下面是相關的崩潰前的日志

那可以試想如果你擁有了大內存,還使用默認的參數,并且還持續大量的寫入,你的磁盤性能 還是一般般的水平, 呵呵.

所以這篇文字的目的就是要怎么在上面的情況下,調整參數,來優化一下當下的問題.

當然如果你的磁盤是SSD 并且寫入數量不大,當然可以忽略這里所探討的一切.

db.adminCommand( { "setParameter": 1, "wiredTigerEngineRuntimeConfig": "eviction=(threads_min=3,threads_max=6),checkpoint=(wait=120),eviction_trigger=80,eviction_target=50"})

在調整完后,繼續3000個并發每個并發20萬的數據,可以從下圖對比文章中的第一個圖,可以看到 dirty  相對于第一張圖來比較,

所以對于大內存的MONGODB ,如果在高并發高寫入的情況下,適當的調整一下  eviction_trigger  和  eviction_target 可能對系統的性能會有提升.

另外上面的調整的參數需要根據自己的系統進行調整,不要按照文中的參數調整.

關于MONGODB大內存參數的調節以及checkpoint與性能的關系是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

祥云县| 涡阳县| 五河县| 宜城市| 理塘县| 永安市| 家居| 康定县| 安丘市| 婺源县| 湟源县| 安福县| 江城| 贵溪市| 略阳县| 明光市| 涟源市| 青海省| 朝阳市| 东乡县| 江阴市| 兰溪市| 武城县| 尤溪县| 桦川县| 长丰县| 墨江| 洛川县| 金川县| 乐昌市| 武宁县| 余姚市| 疏附县| 房产| 桃源县| 南通市| 中山市| 石楼县| 江油市| 和顺县| 长寿区|