SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
MongoDB Configパラメータ解説


              第4回 丸の内MongoDB勉強会
                    NRI OpenStandia
                 渡部 徹太郎、藤崎 祥見




1
はじめに
• このスライドでは公式マニュアルと丸の内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
丸の内MongoDB勉強会とは

                 丸の内mongodb




3
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
重要パラメータ一覧
      重要パラメータ

    • [ログ、情報出力]          • [インターフェイス]         • [チューニング]
      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
パラメータ設定方法
• 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 } )
パラメータ:ログ、情報出力関連
    パラメータ名            デフォルト値    説明

    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
パラメータ:インターフェイス関連
    パラメータ名             デフォルト値   説明

    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
パラメータ:チューニング関連(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
パラメータ:チューニング関連(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
パラメータ:セキュリティ関連
     パラメータ名        デフォルト値   説明

     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
パラメータ:その他
     パラメータ名       デフォルト値       説明

     dbpath       /data/db/    DBファイルを格納するディレクトリのパス。WindowsのデフォルトはC:¥data¥db¥

     fork         false        バックグラウンドで動かす。
                               ログが標準出力に出ないので、logpathかsyslogの指定が必須。Windowsにはない。
     repair       false        サーバがクラッシュした時にデータ等をリペアする。
                               実行するとリペアして終わりなので、その後mongodを別に立ち上げる必要あり。
     repairpath   dbpath       リペアするDBパスを指定。
     upgrade      false        dbpathで指定されたデータファイルのフォーマットを最新版にアップデートする。
                               古いフォーマットの時にだけ有効。
                               Note: 勝手にアップデートされてしまうので、普通はこのオプションは使うべきではない。




12
Thank you
     Github: https://github.com/syokenz/marunouchi-mongodb
     Mail: syokenz@gmail.com, fetaro@gmail.com
     Twitter: @syokenz, @fetarodc




13

Contenu connexe

Tendances

AmebaのMongoDB活用事例
AmebaのMongoDB活用事例AmebaのMongoDB活用事例
AmebaのMongoDB活用事例
Akihiro Kuwano
 
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_syncDbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
Koji Shinkubo
 

Tendances (20)

MongoDB very basic (Japanese) / MongoDB基礎の基礎
MongoDB very basic (Japanese) / MongoDB基礎の基礎MongoDB very basic (Japanese) / MongoDB基礎の基礎
MongoDB very basic (Japanese) / MongoDB基礎の基礎
 
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけRDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
 
さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)
 
AmebaのMongoDB活用事例
AmebaのMongoDB活用事例AmebaのMongoDB活用事例
AmebaのMongoDB活用事例
 
Pacemakerを使いこなそう
Pacemakerを使いこなそうPacemakerを使いこなそう
Pacemakerを使いこなそう
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
 
MongoDBのアレをアレする
MongoDBのアレをアレするMongoDBのアレをアレする
MongoDBのアレをアレする
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
Presto ベースのマネージドサービス Amazon Athena
Presto ベースのマネージドサービス Amazon AthenaPresto ベースのマネージドサービス Amazon Athena
Presto ベースのマネージドサービス Amazon Athena
 
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_syncDbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
 

Similaire à MongoDB Configパラメータ解説

C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努
Insight Technology, Inc.
 
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
Insight Technology, Inc.
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
Yoshinori Matsunobu
 
Postgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etcPostgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etc
kasaharatt
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
Masahiro Nagano
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
yut148atgmaildotcom
 

Similaire à MongoDB Configパラメータ解説 (20)

#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門
 
C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
 
TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇
 
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
 
Mysql casial01
Mysql casial01Mysql casial01
Mysql casial01
 
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
 
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
 
社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ 社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~
 
Cloudera Manager4.0とNameNode-HAセミナー資料
Cloudera Manager4.0とNameNode-HAセミナー資料Cloudera Manager4.0とNameNode-HAセミナー資料
Cloudera Manager4.0とNameNode-HAセミナー資料
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介
 
Postgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etcPostgre sql9.3 newlockmode_and_etc
Postgre sql9.3 newlockmode_and_etc
 
1MB
1MB1MB
1MB
 
BBBBB
BBBBBBBBBB
BBBBB
 
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜
 
Gingerbread
GingerbreadGingerbread
Gingerbread
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
 
2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ
 

MongoDB Configパラメータ解説

  • 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 Options 2
  • 3. 丸の内MongoDB勉強会とは 丸の内mongodb 3
  • 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