Search:

Search all manuals
Search this manual
Manual
Couchbase Server マニュアル 2.0
Community Wiki and Resources
Couchbase Server 2.0をダウンロード
Couchbase 開発者ガイド 2.0
クライアントライブラリ
Couchbase Server フォーラム
Additional Resources
Community Wiki
Community Forums
Couchbase SDKs
Parent Section
D ビューのトラブルシューティング(技術的背景)
Chapter Sections
Chapters

D.1. クエリ応答でのタイムアウトエラー

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