Contenu connexe
Similaire à MongoDB Configパラメータ解説 (20)
MongoDB Configパラメータ解説
- 2. はじめに
• このスライドでは公式マニュアルと丸の内MongoDB勉強会の資料を
もとに、MongoDBの設定値を解説します。
• 公式マニュアル:Configuration File Options
http://docs.mongodb.org/manual/reference/configuration-options/
• 丸の内MongoDB勉強会#4 MongoDB全設定値解説
詳細な解説と一部パラメータの検証結果があります。このスライドで不明な点があった
場合、まずはこちらを参照すると解決するかもしれません。
https://github.com/syokenz/marunouchi-mongodb/tree/master/20121106/fetarodc
• ※以下の環境に依存したオプションは省略させてもらいました。
• Replication Options
• Master/Slave Replication
• Sharding Cluster Options
2
- 4. Configパラメータ一覧
• [ログ、情報出力] • [インターフェイス] • [チューニング]
logpath port maxConns
logappend bind_ip notablescan
syslog rest directoryperdb
verbose nohttpinterface journal / nojournal
quiet jsonp journalCommitInterval
pidfilepath ipv6 noprealloc
cpu nounixsocket nssize
diaglog unixSocketPrefix quota
profile quotaFiles
slowms smallfiles
sysinfo • [セキュリティ] syncdelay
traceExceptions auth / noauth
keyFile • [その他]
objcheck dbpath
noscripting fork
repair
repairpath
upgrade
4
- 5. 重要パラメータ一覧
重要パラメータ
• [ログ、情報出力] • [インターフェイス] • [チューニング]
logpath port maxConns
logappend bind_ip notablescan
syslog rest directoryperdb
verbose nohttpinterface journal / nojournal
quiet jsonp journalCommitInterval
pidfilepath ipv6 noprealloc
cpu nounixsocket nssize
diaglog unixSocketPrefix quota
profile quotaFiles
slowms smallfiles
sysinfo • [セキュリティ] syncdelay
traceExceptions auth / noauth
keyFile • [その他]
objcheck dbpath
noscripting fork
repair
repairpath
upgrade
5
- 6. パラメータ設定方法
• mongod(またはmongos)起動時に、コマンドライン引数かconfigファイルで設定す
る。両方にあった場合、configファイルが優先される。
• コマンドラインの場合
$ mongod --dbpath /data/db/ --verbose
• configファイルの場合
1) 設定ファイルの作成
dbpath = /data/db/
verbose = true
2) configファイルの読み込み(以下の2つは同じ)
$ mongod --config /etc/mongodb.conf
$ mongod -f /etc/mongodb.conf
• 一部のパラメータはmongo shellのrunCommandからset,get可能。
logLevel, notablescan, traceExceptions, quiet, syncdelay
> use admin
> db.runCommand( { setParameter: 1, logLevel: 3 } )
6 > db.runCommand( { getParameter: 1, logLevel: 1 } )
- 7. パラメータ:ログ、情報出力関連
パラメータ名 デフォルト値 説明
logpath None ログの出力先。デフォルトでは標準出力に出る。
logappend false ログに追記する。
syslog false ログをsyslogに出す。
verbose false ログに詳細な情報を表示する。-v(--vervose)から-vvvvvまでの5段階がある。設定ファイル
だとv=true(vervose=true)からvvvvv=true。
quiet false ログ情報を少なくする。以下のもの以外は出力しない。
・drop,dropindex,diagLogging,validate,cleanのコマンド結果
・レプリケーションの状態
・接続受付、接続解除
pidfilepath None PIDファイルのパス。指定しないとPIDファイルを作らない。
cpu false 4秒おきにcpu使用率をログに出力
diaglog 0 トラブルシューティングで使うバイナリログを出す。出す場所はdbpath。レベルは、
0,1,2,3,7がある。mongosniff –source DIAGLOG “diaglogファイル”で読む。
profile 0 プロファイラのレベル。レベルは、0,1,2がある。db.system.profileに保存される。
slowms 100[ms] プロファイラが、クエリをslowと判断する閾値。プロファイラがOFFの場合ログに出力。
ONの場合、db.system.profileに出力。
sysinfo false システム情報を出力する。出力されるだけで終了し、DBは起動しないので設定ファイル
でtrueにすると悲しいことになる。
traceExceptions false ログにフルスタックトレースを出力する。
7
- 8. パラメータ:インターフェイス関連
パラメータ名 デフォルト値 説明
port 27017 待ち受けるポート番号
bind_ip All 待ち受けるIPアドレス。
","区切りで複数指定可能。127.0.0.1を指定すればローカルからしかアクセスできなくな
る。
rest false restインターフェースを有効にする。
http://localhost:28017/{db_name}/{collection_name}/でGETするとJSONが返ってくる。 検
索条件も追加可能。
nohttpinterface false HTTPインターフェースの無効化。 restオプションで上書きされる。
jsonp false HTTPのインターフェースを通してJSONPを許可する。
これをtrueにする前にセキュリティを考えよう。JSONPはクロスドメインでJSONデータ
をやりとりする仕組み。
ipv6 false trueにするとIPv6を有効にする。
nounixsocket false trueにした場合、Unixソケットを使わない。デフォルトではUnixソケットを使用する。ロ
ーカルであればTCPではなくUnixソケットを使用し、パフォーマンスが向上するかも。
unixSocketPrefix /tmp Unixソケットファイルの配置場所。
8
- 9. パラメータ:チューニング関連(1/2)
パラメータ名 デフォルト値 説明
maxConns 20000 最大接続数。OSによって制限される(ulimitやファイルディスクリプタ)ので最大値が
保証されるわけではない。
notablescan false trueにするとindexが効かないクエリ実行時にエラーを返す。
directoryperdb false データベースごとにデータファイルを作る。
journal (64bit) true trueだとジャーナルを確実に永続化し、一貫性を保つ。
(32bit) false 一貫性を保証しなくてもよい場合はnojournal=trueとしてジャーナルを無効にする。そ
のほうがオーバーヘッドがない。ジャーナル書き込みによるディスクへの影響を減ら
したい場合は、ジャーナルのレベルを変えて、smallfiles=trueとしジャーナルファイル
のデータ量を減らすとよい。
nojournal (64bit) false journalの逆。configファイルでjournal=falseとしても” warning: remove or comment out
(32bit) true this line by starting it with „#‟, skipping now : journal = false”とされてskipされるので、
64bitシステムでジャーナルを無効にしたい場合にはnojournal=trueとする。
journalCommitInterval 100[ms] ジャーナルを書き込む間隔(msec)。減らすとディスクへの負荷が減る。2~300の間で
変更可能。
syncdelay 60[ms] この設定値は、ディスクへの書き込みをflash(保留しているデータを書き込む)の最大時
間。この時間内はディスクが壊れるとデータを破損する可能性がある。多くの場合、
実際のディスクへの書き込み間隔はもっと小さい。
0に設定するとmongodは即時ディスク書き込みをするが、パフォーマンスは低下する。
journalを設定している場合、journalCommitIntervalの時間内であれば、すべての書き込
みは保証される。
9
- 10. パラメータ:チューニング関連(2/2)
パラメータ名 デフォルト値 説明
noprealloc false データファイルを分割しない。
スタートアップが早くなることがあるが、普通の操作が遅くなることがあるかも。
nssize 16(MB) ネームスペースファイルのデフォルトサイズ。コレクションやインデックスで使用される。
多くのコレクションを作る必要がある場合、nssizeを大きくする必要がある。最大値は
2GB。設定後に作成されるものだけに影響する。既存のDBに適用したい場合は、
db.repairDatabase()コマンドを使う。
quota false データベースファイルごとにデータサイズに制限をかける。
quotaFiles 8 データベールごとにデータベースファイル数を制限する。ファイルは64Mスタートで倍々
に容量が増えていく。8個ファイルがあるということはほぼ16G。
(64M + 128M + ・・・ + 8192M = 64 * (2^8 - 1) / (2 - 1) = 16363M ≒ 16G)
smallfiles false データファイルサイズを小さくする。設定すると、
・データファイルの最大サイズは512Mになる
・ジャーナルファイルは1Gから128Mになる
もし、データサイズが小さいならsmallfilesを設定したほうがパフォーマンスが上がる。
10
- 11. パラメータ:セキュリティ関連
パラメータ名 デフォルト値 説明
auth false 認証を有効にする。
認証を有効にした後、adminのデータベースにユーザ情報を入れれば、ユーザ認証できる。
noauthが同時に設定されていた場合でもauthが優先され認証が有効になる。
noauth true authの逆
authと同時に設定されていた場合、authが優先され認証が有効になる。 認証はデフォル
トで無効にされているので、存在意義が不明な設定項目。いつ使うの?
keyFile None レプリカセットやシャーディングにて、メンバを認証する鍵ファイルを指定する。
鍵はopenSSLのコマンドで作るとよい。
objcheck false ユーザのリクエストをvalidateして、不正なBSONオブジェクトの挿入を防ぐ。
オーバーヘッドがあるためデフォルトはfalse。ちなみに、validateはmongo shellからも実
行可能で、db.users.validate()と打つとできる。
noscripting false db.eval()を無効にしてサーバサイドでのjavascriptを許可しない。
11
- 12. パラメータ:その他
パラメータ名 デフォルト値 説明
dbpath /data/db/ DBファイルを格納するディレクトリのパス。WindowsのデフォルトはC:¥data¥db¥
fork false バックグラウンドで動かす。
ログが標準出力に出ないので、logpathかsyslogの指定が必須。Windowsにはない。
repair false サーバがクラッシュした時にデータ等をリペアする。
実行するとリペアして終わりなので、その後mongodを別に立ち上げる必要あり。
repairpath dbpath リペアするDBパスを指定。
upgrade false dbpathで指定されたデータファイルのフォーマットを最新版にアップデートする。
古いフォーマットの時にだけ有効。
Note: 勝手にアップデートされてしまうので、普通はこのオプションは使うべきではない。
12
- 13. Thank you
Github: https://github.com/syokenz/marunouchi-mongodb
Mail: syokenz@gmail.com, fetaro@gmail.com
Twitter: @syokenz, @fetarodc
13