stale=false
でビューに問い合せるとき、たびたび1つ以上のノードのタイムアウトエラーが発生します。これらのノードは元のクエリ要求を受信しないノードであり、たとえば、ノード1に問い合わせると、次の例に示すように(reduce関数に_countを使用したビューで)ノード2、3、および4のタイムアウトエラーが発生することがあります:
shell> curl -s 'http://localhost:9500/default/_design/dev_test2/_view/view2?full_set=true&stale=false' {"rows":[ {"key":null,"value":125184} ], "errors":[ {"from":"http://192.168.1.80:9503/_view_merge/?stale=false","reason":"timeout"}, {"from":"http://192.168.1.80:9501/_view_merge/?stale=false","reason":"timeout"}, {"from":"http://192.168.1.80:9502/_view_merge/?stale=false","reason":"timeout"} ] }
ここでの問題は、stale=false
(完全一貫性)を使用したクエリでは、ビューのマージノード(クエリ要求を受信したノード、つまりこの例ではノード1)がクラスタ内の他の各ノードからの部分的なビューの結果を受け取るように、デフォルトで60000ミリ秒(1分)まで待つということです。リモートノードからの結果を1分以上待っている場合、マージノードは結果を待つのを停止し、タイムアウトエラーのエントリを最終的な応答に追加します。stale=false
リクエストはクライアント、またはこの例のように、ビューマージノードをインデックスが最新状態になるまでブロックするので、これらのタイムアウトが頻繁に発生することがあります。
タイムアウトエラーとなったノードのログを参照すれば、インデックス作成/更新に60秒以上かかっていることがわかります。例えばノード2から次のようなログを参照します:
[couchdb:info,2012-08-20T15:21:13.150,n_1@192.168.1.80:<0.6234.0>:couch_log:info:39] Set view `default`, main group `_design/dev_test2`, updater finished Indexing time: 93.734 seconds Blocked time: 10.040 seconds Inserted IDs: 124960 Deleted IDs: 0 Inserted KVs: 374880 Deleted KVs: 0 Cleaned KVs: 0
このケースでは、ノード2はインデックスを更新するために103.774秒かかっています。
これらのタイムアウトを回避するためには、次の例のとおり、ビューのクエリURLで、大きな値のconnection_timeoutを渡すことでできます:
shell> time curl -s 'http://localhost:9500/default/_design/dev_test2/_view/view2?full_set=true&stale=false&connection_timeout=999999999' {"rows":[ {"key":null,"value":2000000} ] } real 2m44.867s user 0m0.007s sys 0m0.007s
ノード1、2、3と4のログには、それぞれ次のようなものが表示されます:
ノード1、ビューをマージするノード
[couchdb:info,2012-08-20T16:10:02.887,n_0@192.168.1.80:<0.27674.0>:couch_log:info:39] Set view `default`, main group `_design/dev_test2`, updater finished Indexing time: 155.549 seconds Blocked time: 0.000 seconds Inserted IDs:96 Deleted IDs: 0 Inserted KVs: 1500288 Deleted KVs: 0 Cleaned KVs: 0
ノード2
[couchdb:info,2012-08-20T16:10:28.457,n_1@192.168.1.80:<0.6071.0>:couch_log:info:39] Set view `default`, main group `_design/dev_test2`, updater finished Indexing time: 163.555 seconds Blocked time: 0.000 seconds Inserted IDs: 499968 Deleted IDs: 0 Inserted KVs: 1499904 Deleted KVs: 0 Cleaned KVs: 0
node 3
[couchdb:info,2012-08-20T16:10:29.710,n_2@192.168.1.80:<0.6063.0>:couch_log:info:39] Set view `default`, main group `_design/dev_test2`, updater finished Indexing time: 164.808 seconds Blocked time: 0.000 seconds Inserted IDs: 499968 Deleted IDs: 0 Inserted KVs: 1499904 Deleted KVs: 0 Cleaned KVs: 0
ノード4
[couchdb:info,2012-08-20T16:10:26.686,n_3@192.168.1.80:<0.6063.0>:couch_log:info:39] Set view `default`, main group `_design/dev_test2`, updater finished Indexing time: 161.786 seconds Blocked time: 0.000 seconds Inserted IDs: 499968 Deleted IDs: 0 Inserted KVs: 1499904 Deleted KVs: 0 Cleaned KVs: 0