MongoDB启动Linux内存大页(HugePage)告警关闭

 

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、网站制作、建邺网络推广、小程序设计、建邺网络营销、建邺企业策划、建邺品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供建邺建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

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的角度,应该有对于这个功能关闭的完整方案,留待我们继续研究。

当前题目:MongoDB启动Linux内存大页(HugePage)告警关闭
转载注明:https://www.cdcxhl.com/article22/ijgpjc.html

成都网站建设公司_创新互联,为您提供云服务器标签优化定制开发自适应网站网站制作品牌网站设计

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设