fc2ブログ

Entries

mongoDB 3.0.2 mongo shellのWARNINGを回避する

問題
centOS6.6にmongoDB3.0.2をインストールしてmongoシェルを実行したらWARNINGが出た。

[root@localhost ~]# mongo
MongoDB shell version: 3.0.2
connecting to: test
Server has startup warnings:

** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
** We suggest setting it to 'never'

** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
** We suggest setting it to 'never'

** 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.



状態
1.kernelのオプションがよくない様子。alwaysでなくneverを設定してほしいらしい。
このオプションについてはOracleのページの説明、”透過的なHugePagesの無効化”が一番分かりやすかったかも。
ようはメモリがらみのオプションが、デフォルトのままだとmongoDBが最適なオプションでないので、変更してほしいというワーニングだったようです。

WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.


2.soft rlimitsという設定値が低いらしい。少なくとも32000にするようにとおっしゃる。

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.


対応
1.kernelのオプションを書き換えるのに、設定ファイルなどあるかと思いきやちょうどいいのが無かった。
マニュアルには/etc/grub.confを修正するように書いてあるけど、defrag のWARNINGは消えないのでいまいち。
サーバ起動時に、最後にオプションを変更するようにする。
この方法だと、mongoDBをサービス起動している場合、再起動が必要になってしまうので、
mongoDBのサービス起動はoffにし、オプション変更後に起動するようにしてみました。
仕込む場所:
/etc/rc.d/rc.local …サーバ起動時、/etc/tc.d/init.dなどの後に実行されるそうです。

以下、追記内容:

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
service mongod start

適用にはOSのrebootが必要です。

2.soft rlimitsの値を変更する。
公式に記載の通り、設定を変更する(今回つかったサーバはcentOS6.6)。
ファイルの作成:
/etc/security/limits.d/99-mongodb-nproc.conf

内容:

mongod soft nproc 64000
mongod hard nproc 64000

マニュアルに、"with new soft nproc and hard nproc values to increase the process limit."
とあり、コマンドのエラーメッセージに32000~64000を設定するようにでていたので、上記のようにしました。
/etc/security/limits.d/90-nproc.conf を参考に、
一番左は許可ユーザのようだったので、mongod の起動ユーザmongodを指定しています。

以上の対応で大丈夫でしたよ。
サービスの起動コマンドをrc.localに書いてるのが若干いただけない気もするけど、とりあえずこれでニゲル。
スポンサーサイト



コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する