国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Web服務器 > 正文

MongoDB 內存使用情況分析

2024-09-01 13:46:29
字體:
來源:轉載
供稿:網友

MongoDB是一個基于分布式文件存儲的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。

MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。

先 ps 一下看看。

復制代碼 代碼如下:


$ ps aux|grep mongod
mongo    26994  9.0 20.0 797264324 13243052 ?  Sl   May16 117:03 /path/to/mongodb/bin/mongod

總共 760G 多的虛擬內存,但是物理內存就只有 12.6G 。這個機器可是有 64G 內存的哦,這看起來 MongoDB 完全沒用多少內存嘛。

再看看 free 的結果。

復制代碼 代碼如下:


$ free -m
             total       used       free     shared    buffers     cached
Mem:         64544      64279        265          0        134      60413
-/+ buffers/cache:       3731      60813
Swap:        31999          0      31999

內存倒是占得差不多了,基本都是 cached ,也就是文件系統緩存。MongoDB 是通過 mmap 方式讓操作系統來處理持久化和緩存的。每個數據文件都直接映射到某個虛擬內存地址。訪問的時候如果這一頁不在內存中,系統就會嘗試把這一頁加載進來。這些內存都是算進 cache 里的。在 mongodb 的官方文檔里有這樣一個說法,top 或 ps 里的 RSIZE 段顯示的是機器的全部內存大小,因為 mongodb 會盡可能占用全部內存。但是事實上,這些緩存并沒有算在里面。因此在 top 或 ps 中是看不出 MongoDB 的實際內存使用情況的。而 free 雖然可以看到系統的內存使用情況,但是沒法確定這些內存里究竟有多少真的是 MongoDB 使用的。

還好有人做了 vmtouch 這個工具。可以檢查文件在緩存中的情況,另外也可以把文件直接加載進緩存或者踢出去。只需要對 MongoDB 的所有數據文件檢查一下緩存加載情況,就可以知道 MongoDB 到底緩存了多少數據了。

復制代碼 代碼如下:


$ vmtouch -m4G /path/to/mongodb/data/
           Files: 256
     Directories: 3
  Resident Pages: 15465901/100219772  58G/382G  15.4%
         Elapsed: 4.072 seconds

這里 -m4G 是 vmtouch 檢查的文件大小限制。MongoDB 的數據文件比較大,通常會超過默認的 500M。這樣看來,緩存用了 58G,這還差不多。Resident Pages 左側的數字是頁的數量,頁的數量乘以文件系統頁大小才是內存使用量。頁的大小可以通過

復制代碼 代碼如下:


getconf PAGESIZE

查看,通常是 4096,也就是 4KB。

MongoDB 在 NUMA 的機器上運行,并且內存被固定到一個 node 的時候,會有一個警告

復制代碼 代碼如下:


WARNING: You are running on a NUMA machine.
We suggest launching mongod like this to avoid performance problems:
numactl –interleave=all mongod [other options]

也許是認為,這種情況下只能用上一個節點的內存。但 MongoDB 的緩存是由操作系統管理的。NUMA 似乎對此并沒有影響。而內存不太小的時候 MongoDB 本身很難用掉一個節點的內存。這種情況下,是否開啟 numactl –interleave=all 作用已經不大了。能做的也許只能是加內存,sharding,或者換 ssd 了。

出處:%e5%86%85%e5%ad%98%e4%bd%bf%e7%94%a8.html

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尚义县| 邯郸市| 镇江市| 新竹县| 东乌珠穆沁旗| 新晃| 独山县| 朔州市| 平阳县| 通许县| 安泽县| 陕西省| 长兴县| 科技| 正镶白旗| 六枝特区| 兴仁县| 宝坻区| 安顺市| 德化县| 保山市| 海宁市| 通江县| 安国市| 柳州市| 巴彦淖尔市| 舒城县| 花垣县| 贵定县| 普定县| 龙门县| 思南县| 莱州市| 许昌县| 平邑县| 安平县| 吴江市| 揭西县| 内黄县| 南乐县| 密山市|