MongoDB Configパラメータ解説

  • 7,379 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
7,379
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
65
Comments
0
Likes
10

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. MongoDB Configパラメータ解説 第4回 丸の内MongoDB勉強会 NRI OpenStandia 渡部 徹太郎、藤崎 祥見1
  • 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. 丸の内MongoDB勉強会とは 丸の内mongodb3
  • 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. 重要パラメータ一覧 重要パラメータ • [ログ、情報出力] • [インターフェイス] • [チューニング] 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. パラメータ設定方法• 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, @fetarodc13