結局のところ、へのメッセージincrease max_dbs_open
はせいぜい部分的な答えであり、最悪の場合は誤解を招くものです。私たちの場合、問題は開いているデータベースの数ではなく、明らかに多くのレプリケーションで使用されているHTTP接続の数でした。
各レプリケーションは、を使用できますmin(worker_processes + 1, http_connections)
。ここでworker_processes
、は各レプリケーションに割り当てられたワーカーの数であり、はこのドキュメントでhttp_connections
説明されているように各レプリケーションに割り当てられたHTTP接続の最大数です。
したがって、使用される接続の総数は次のようになります。
number of replications * min(worker_processes + 1, http_connections)
デフォルト値のworker_processes
は4、デフォルト値http_connections
は20です。レプリケーションが100の場合、レプリケーションで使用されるHTTP接続の総数は500です。別の設定はmax_connections
、CouchDBサーバーが説明するように許可するHTTP接続の最大数を決定します。このドキュメントでは。デフォルトは2048です。
この場合、各ユーザーには2つのレプリケーションがあります。1つはユーザーからマスターデータベースへ、もう1つはマスターデータベースからユーザーへのレプリケーションです。したがって、この場合、デフォルト設定では、ユーザーを追加するたびに、最終的にデフォルトを吹き飛ばす10個のHTTP接続を追加していましたmax_connections
。
複製は最小限であり、ユーザーからマスターへ、およびマスターからユーザーへ移動されるデータはごくわずかであるため、、、の数をダイヤルバックしworker_processes
、すべてが順調http_connections
に進んでいます。max_connections
アップデート
他のいくつかの調査結果
より多くのオープン接続を可能にするために、プロセスの上限を引き上げる必要がありました
レプリケーションの作成が速すぎると、問題も発生しました。新しいレプリケーションを作成した速さでダイヤルバックすると、問題を緩和するのにも役立ちました。ymmv。