MongoDB啟動Linux記憶體大頁(Huge Page)告警關閉
Linux環境中,預設情況下啟動MongoDB會有很多提示告警資訊的。如果我們安裝資料庫只是為了簡單的測試、學習,也不會有太多的問題。但是,如果我們是搭建正式的生產環境,或者系統可能會有比較高的效能要求的時候,我們就儘可能的需要減少這些隱患,獲取更好的配置內容。
1、環境說明
我們使用紅帽6.5進行測試。
[root@oracle-test ~]# uname -a
Linux oracle-test 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@oracle-test ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
預設啟動模式下,會有若干幾個Warning資訊,如下:
[mongodb@oracle-test ~]$ mongod
2017-07-13T22:50:24.098+0800 I CONTROL [initandlisten] MongoDB starting : pid=19087 port=27017 dbpath=/data/db 64-bit host=oracle-test
(篇幅原因,有省略……)
2017-07-13T22:50:24.138+0800 I STORAGE [initandlisten]
2017-07-13T22:50:24.138+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-07-13T22:50:24.138+0800 I STORAGE [initandlisten] ** See 、_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2017-07-13T22:50:24.212+0800 I CONTROL [initandlisten]
2017-07-13T22:50:24.212+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
(篇幅原因,有省略……)
2017-07-13T22:50:24.213+0800 I CONTROL [initandlisten]
2017-07-13T22:50:24.213+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-07-13T22:50:24.213+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2017-07-13T22:50:24.213+0800 I CONTROL [initandlisten]
2017-07-13T22:50:24.213+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-07-13T22:50:24.213+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2017-07-13T22:50:24.213+0800 I CONTROL [initandlisten]
(篇幅原因,有省略……)
這四條資訊,分別提示了當前資訊所存在的四個潛在風險點。
ü Using the XFS filesystem:MongoDB同MySQL一樣,都是支援儲存引擎(Storage Engine)系統架構模式。WiredTiger是目前MongoDB支援的主要引擎;
ü Access control:訪問控制。在不使用—auth為引數啟動伺服器的情況下,MongoDB對於訪問是沒有許可權控制的。所以會有所提示;
ü 另外兩個就是關於HugePage管理策略的提示。HugePage,中文翻譯為大頁,是Linux作業系統一種管理記憶體的方式。和通常方式相比,HugePage模式下記憶體分配管理會有所差異。從提示資訊看,MongoDB顯然是不希望這個特性被啟用;
本篇集中在處理HugePage特性關閉上。
2、Online操作配置
根據提示內容,在/sys/kernel/mm/transparent_hugepage目錄下,儲存著配置狀態檔案。
[root@oracle-test /]# cd /sys/kernel/mm/transparent_hugepage
[root@oracle-test transparent_hugepage]# ls -l
total 0
-rw-r--r--. 1 root root 4096 Jun 21 20:26 defrag
-rw-r--r--. 1 root root 4096 Jun 21 20:26 enabled
drwxr-xr-x. 2 root root 0 Jul 13 22:52 khugepaged
[root@oracle-test transparent_hugepage]# cat enabled
[always] madvise never
[root@oracle-test transparent_hugepage]# cat defrag
[always] madvise never
取值always是不被接受的。我們需要設定為Never。
[root@oracle-test transparent_hugepage]# echo never >> /sys/kernel/mm/transparent_hugepage/enabled
[root@oracle-test transparent_hugepage]# echo never >> /sys/kernel/mm/transparent_hugepage/defrag
[root@oracle-test transparent_hugepage]# cat enabled
always madvise [never]
[root@oracle-test transparent_hugepage]# cat defrag
always madvise [never]
操作之後,重啟MongoDB可以發現提示消失。由於篇幅原因,內容省略。但是,這種方式如果重啟伺服器,進行的配置內容就恢復原狀。
[root@oracle-test ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
[root@oracle-test ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
如果可能,我們還是期望尋找一種永久解決問題的方法。
3、兩種網傳的解決之道
在網路上,流傳著兩種解決永久關閉的方案。筆者均進行了嘗試。
方法1:修改grub.conf配置檔案,新增Never專案。
root@oracle-test ~]# cd /etc
[root@oracle-test etc]# ls -l | grep grub
lrwxrwxrwx. 1 root root 22 Jul 27 2015 grub.conf -> ../boot/grub/grub.conf
[root@oracle-test etc]# vi grub.conf
r-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=vg_linux6proser/lv_root SYSFONT=latarcyrheb-sun16 crashkernel=128M rd_LVM_LV=vg_linux6proser/lv_swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-431.el6.x86_64.img
transparent_hugepage=never --新增加行
~
"grub.conf" 19L, 893C written
重啟系統後,檢視引數。
[root@oracle-test ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
[root@oracle-test ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
並沒有效果,起碼在筆者的環境下是失效的。
方法2:修改rc.local檔案,啟動階段自動執行。在/etc/rc.local檔案中,增加對應內容。
[root@oracle-test ~]# vi /etc/rc.local
touch /var/lock/subsys/local
if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/redhat_transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
fi
~
重啟之後,檢視HugePage狀態。
[root@oracle-test ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@oracle-test ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
設定成功。
4、結論
本文介紹了處理HugePage告警日誌的方法和策略,雖然不是很完美,但至少是經過驗證的方案。筆者猜想從Linux的角度,應該有對於這個功能關閉的完整方案,留待我們繼續研究。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-2142078/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux下的MongoDB安裝&啟動&關閉LinuxMongoDB
- Mongodb 啟動關閉指令碼並設定開機自動啟動MongodbMongoDB指令碼
- Windows 64bit使用記憶體大頁Windows記憶體
- Oracle在Linux下對記憶體大頁HugePage的實踐OracleLinux記憶體
- Mongodb開啟與關閉MongoDB
- linux svn啟動和關閉Linux
- SAP筆記-啟動關閉SAP筆記
- mongoDB非正常關閉後無法啟動問題MongoDB
- Oracle 記憶體自動管理--關閉自動管理Oracle記憶體
- MongoDB系列一:MongoDB安裝、啟動關閉服務、客戶端連線MongoDB客戶端
- oracle啟動和關閉指令碼for LinuxOracle指令碼Linux
- zt_eygle_Linux虛擬記憶體管理 - page table頁表的作用Linux記憶體
- win10系統下wsappx.exe程式佔用記憶體大能關閉嗎Win10APP記憶體
- 快速實現釘釘告警通知、處理告警、關閉告警
- Orale自動啟動以及關閉指令碼_linux指令碼Linux
- Flutter 開發 Android & IOS 啟動頁 splash pageFlutterAndroidiOS
- LINUX 檢視真正PGA佔用的記憶體大小Linux記憶體
- oracle啟動與關閉Oracle
- ORACLE DataGuard 關閉啟動Oracle
- 啟動/關閉 dynamic viewView
- nginx啟動,重啟,關閉命令Nginx
- mongoDB因root啟動關閉資料庫導致mongo普通使用者無法啟動MongoDB資料庫
- 如何獲取EMMC記憶體大小記憶體
- tomcat設定記憶體大小Tomcat記憶體
- 記憶體大小與效能的理解記憶體
- 記一次記憶體告警記憶體
- Linux 下 Oracle隨系統自動啟動和關閉LinuxOracle
- win10系統快速啟動怎麼關閉 關閉Windows快速啟動Win10Windows
- 11.2.0.3 例項啟動報大記憶體頁資訊記憶體
- centos 開啟大頁記憶體CentOS記憶體
- centos下nginx啟動、重啟、關閉CentOSNginx
- mysql的啟動和關閉MySql
- ORACLE啟動模式及關閉Oracle模式
- Oracle RAC 啟動與關閉Oracle
- linux vmware虛擬機器的命令啟動關閉Linux虛擬機
- Linux 啟動過程, 初始化和關閉(轉)Linux
- win10快速啟動怎麼關閉_win10如何關閉快速啟動Win10
- 資料庫自動啟動關閉資料庫