MongoDB 3.0安装后如何消除警告
安装本身未发生变化,与2.6版本的步骤相同。
由于安装后出现了一些警告信息,因此整理了关于安装和警告信息的解决方法。
安装
在安装MongoDB的过程中,参考MongoDB的文档进行操作。
http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/
安装准备
$sudo vi /etc/yum.repos.d/mongodb-org-3.0.repo
[mongodb-org-3.0]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1
安装执行
$sudo yum install -y mongodb-org
服务启动
$sudo service mongod start
正常启动后,使用mongo命令进行访问
$ mongo
MongoDB shell version: 3.0.0
connecting to: test
Server has startup warnings:
2015-03-06T23:40:40.565+0900 I CONTROL [initandlisten]
2015-03-06T23:40:40.565+0900 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2015-03-06T23:40:40.565+0900 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2015-03-06T23:40:40.565+0900 I CONTROL [initandlisten]
2015-03-06T23:40:40.566+0900 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2015-03-06T23:40:40.566+0900 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2015-03-06T23:40:40.566+0900 I CONTROL [initandlisten]
2015-03-06T23:40:40.566+0900 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 1024 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.
2015-03-06T23:40:40.566+0900 I CONTROL [initandlisten]
>
这样的情况下会显示警告消息。
以下步骤可消除警告。
安装后的设置(1)- “警告:软资源限制太低” 解决方法
$sudo vi /etc/security/limits.d/90-nproc.conf
因为上述是针对CentOS的情况,所以根据发行版的不同,我认为可能是/etc/security/limits.conf。
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 1024
root soft nproc unlimited
* soft nofile 64000 # この行追加
* hard nofile 64000 # この行追加
$su -
# service mongod restart
这样的话,”WARNING: 软RLIMITS太低。” 就可能消失了。
也许需要重新启动。
(2015/07/22 Update)
“警告:软资源限制过低”是在安装CentOS时发生的。
在AmazonLinux(Amazon Linux AMI 2015.03 (HVM), SSD Volume Type)中没有发生。
(2015/07/22 Update 结束)
安装后的设置(2)- 关闭「WARNING: /sys/kernel/mm/transparent_hugepage/enabled(或 defrag )is ‘always’.」的方法。
$ sudo vi /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then # ↑ここから追加
echo never > /sys/kernel/mm/transparent_hugepage/enabled # │
fi # │
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then # │
echo never > /sys/kernel/mm/transparent_hugepage/defrag # │
fi # ↓ここまで追加
这样一来,”WARNING:/sys/kernel/mm/transparent_hugepage/enabled is ‘always’.”和”WARNING:/sys/kernel/mm/transparent_hugepage/defrag is ‘always’.” 将消失。
这里可能还需要重启。
以上所述,根据记忆做出了备注。计划在某个时间点重新验证并更新。
AmazonLinux的更新日期为2015年7月22日。
CentOS发生了两个警告:
「警告:/sys/kernel/mm/transparent_hugepage/enabled为’always’。」
「警告:/sys/kernel/mm/transparent_hugepage/defrag为’always’。」
而AmazonLinux(Amazon Linux AMI 2015.03 (HVM), SSD Volume Type)仅发生了一个警告:
「警告:/sys/kernel/mm/transparent_hugepage/defrag为’always’。」
(注:截至2015年7月22日更新)
关于 TransparentHugePages(2015/09/28附注)
在过去没有察觉到的是,官方教程中也提到了为了达到最佳性能,应该将TransparentHugePages禁用。
Transparent Huge Pages (THP) is a Linux memory management system that reduces the overhead of Translation
Lookaside Buffer (TLB) lookups on machines with large amounts of memory by using larger memory pages.
However, database workloads often perform poorly with THP, because they tend to have sparse rather than
contiguous memory access patterns. You should disable THP on Linux machines to ensure best performance with
MongoDB.
※透明巨大页面(TransparetHugePages)是内核内存管理机制中的一种功能,旨在提高性能。根据RedHat的文档(性能调优指南「5.2. 巨大页面和透明巨大页面」),它被描述为一个可以自动化大部分巨大页面的创建、管理和使用的抽象层。如果将其用作普通的应用服务器,可能会提高性能。搜索“透明巨大页面数据库”还会发现除了MongoDB外,还有很多推荐禁用该功能的数据库。
备忘录:有时间的时候,请仔细阅读Documentation/vm/transhuge.txt
(更新于2015/09/28,完)