autoConnectRetryは、予期しない切断の後にドライバーがサーバーへの再接続を自動的に試行することを意味します。本番環境では、通常、これをtrueに設定します。
connectionsPerHostは、単一のMongoインスタンス(シングルトンなので、通常、アプリケーションごとに1つある)がmongod / mongosプロセスに対して確立できる物理接続の量です。執筆時点では、実際のクエリスループットが低くても、最終的にこの量の接続が確立されます(つまり、アプリケーションサーバーごとにこの数に達するまで、mongostatの「conn」統計が上昇します)。
ほとんどの場合、これを100より大きく設定する必要はありませんが、この設定は「テストして確認する」ことの1つです。サーバーへの接続の合計量が超えないように、この値を十分低く設定する必要があることに注意してください。
db.serverStatus().connections.available
生産では、現在40です。
connectTimeout。名前が示すように、接続試行が中止される前にドライバーは待機するミリ秒数を示します。タイムアウトを何か長い時間(15から30秒)に設定します。そうしないと、接続試行が成功するのを妨げる可能性があるため、現実的で予期される可能性があります。通常、接続の試行に数秒以上かかる場合、ネットワークインフラストラクチャは高スループットに対応できません。
maxWaitTime。接続プールで接続が使用可能になるのをスレッドが待機するミリ秒数。これが間に合わない場合は例外が発生します。デフォルトのままにします。
socketTimeout。標準ソケットタイムアウト値。60秒(60000)に設定します。
threadsAllowedToBlockForConnectionMultiplier。プールが現在使い果たされている場合に接続が使用可能になるのを待機できるスレッドの数を示すconnectionsPerHostの乗数。これは、「com.mongodb.DBPortPool $ SemaphoresOut:Out of semaphores to get db connection」例外が発生する設定です。このスレッドキューがthreadsAllowedToBlockForConnectionMultiplier値を超えると、この例外がスローされます。たとえば、connectionsPerHostが10で、この値が5の場合、前述の例外がスローされる前に最大50のスレッドがブロックされる可能性があります。
大きなキューが発生する可能性があるスループットの大きなピークが予想される場合は、この値を一時的に増やします。まさにその理由で、現時点では1500にあります。クエリの負荷が常にサーバーを上回っている場合は、それに応じてハードウェア/スケーリングの状況を改善する必要があります。
readPreference。(更新、2.8以降)デフォルトの読み取り設定を決定するために使用され、「slaveOk」を置き換えます。クラスファクトリメソッドの1つを使用してReadPreferenceを設定します。最も一般的な設定の完全な説明は、この投稿の最後にあります
w。(更新、2.6 +)この値は、書き込みの「安全性」を決定します。この値が-1の場合、ネットワークまたはデータベースのエラーに関係なく、書き込みはエラーを報告しません。WriteConcern.NONEは、これに適した事前定義されたWriteConcernです。wが0の場合、ネットワークエラーは書き込みを失敗させますが、mongoエラーはそうではありません。これは通常「ファイアアンドフォーゲット」書き込みと呼ばれ、一貫性と耐久性よりもパフォーマンスが重要な場合に使用する必要があります。このモードではWriteConcern.NORMALを使用します。
wを1以上に設定すると、書き込みは安全と見なされます。安全な書き込みは書き込みを実行し、サーバーへの要求によってそれをフォローアップして、書き込みが成功したことを確認するか、失敗した場合はエラー値を取得します(つまり、書き込み後にgetLastError()コマンドを送信します)。このgetLastError()コマンドが完了するまで、接続は予約されることに注意してください。これと追加のコマンドの結果として、スループットはw <= 0の書き込みよりも大幅に低くなります。w値が正確に1の場合、MongoDBは、書き込みを送信したインスタンスで書き込みが成功した(または検証可能に失敗した)ことを保証します。
レプリカセットの場合、MongoDBに書き込みを送信する前に、レプリカセットの少なくとも "w"メンバーに書き込む前に、より高い値を使用できます(より正確には、 "w"メンバーへの書き込みのレプリケーションを待ちます) )。wを文字列 "majority"に設定して、MongoDBにレプリカセットメンバーの大部分(WriteConcern.MAJORITY)への書き込みを実行するように指示することもできます。通常、生のパフォーマンス(-1または0)または複製された書き込み(> 1)が必要でない限り、これを1に設定する必要があります。1より大きい値は、書き込みスループットに大きな影響を与えます。
fsync。有効にすると、書き込みごとにmongoを強制的にディスクにフラッシュする耐久性オプション。書き込みバックログに関連する耐久性の問題は一度もないので、本番環境ではこれをfalse(デフォルト)にしています。
j * (新規2.7以降) *。trueに設定されている場合、MongoDBが戻る前にジャーナルグループのコミットが成功するまで待機することをブール値。ジャーナリングを有効にしている場合は、これを有効にして耐久性を高めることができます。http://www.mongodb.org/display/DOCS/Journalingを参照して、どのジャーナリングで取得できるか(したがって、このフラグを有効にする理由)を確認してください。
注:上記のすべてに同じメソッドのタグ対応バージョンがあり、代わりにTaggableReadPreferenceインスタンスを返します。レプリカセットタグの詳細については、こちらをご覧ください。レプリカセットタグ