MongoDB Configパラメータ解説

28,108 views

Published on

丸の内MongoDB勉強会 #4で@fetarodcさんが発表した「MongoDB全設定値解説」のスライドです。https://github.com/syokenz/marunouchi-mongodb/tree/master/20121106/fetarodc

Published in: Technology
0 Comments
11 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
28,108
On SlideShare
0
From Embeds
0
Number of Embeds
7,978
Actions
Shares
0
Downloads
90
Comments
0
Likes
11
Embeds 0
No embeds

No notes for slide

MongoDB Configパラメータ解説

  1. 1. MongoDB Configパラメータ解説 第4回 丸の内MongoDB勉強会 NRI OpenStandia 渡部 徹太郎、藤崎 祥見1
  2. 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 Options2
  3. 3. 丸の内MongoDB勉強会とは 丸の内mongodb3
  4. 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 upgrade4
  5. 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 upgrade5
  6. 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. 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. 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. 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. 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. 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. 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. 13. Thank you Github: https://github.com/syokenz/marunouchi-mongodb Mail: syokenz@gmail.com, fetaro@gmail.com Twitter: @syokenz, @fetarodc13

×