2016-11-15 13 views
1

私はN個のデータノード、1つのクエリノードと1つのインデックスノードがあるcouchbaseクラスタセットアップ(couchbaseバージョン4.1)を持っています。データノードは、単一のバケット内に約100万のキー値ペアを持ちます。このセットアップ全体は、仮想ネットワーク内のMicrosoft Azureでホストされます。また、各ノードには、RAM、CPU、ディスクに問題がないほどのリソースがあることを保証することができます。couchbaseのN1QLクエリがハングする理由を理解できませんか?

私はcouchbaseサーバーでJSONドキュメントを手に入れても問題ありません。私はちょうどテストしているので、今のところマシン間ですべてのポートを開いているのでポートは問題になりません。

しかし、私は(couchbaseシェルまたはPython SDKを使用して)N1QLクエリを実行しようとすると動作しません。クエリがちょうどハングアップし、私はサーバーからの応答を取得しません。一方で、クエリは何の問題もなく動作し、1分後に再び動作を停止します。

必要に応じて、私のバケットとその他の必要なグローバルセカンダリインデックスにプライマリインデックスを作成しました。

また、couchbaseが提供するサンプルバケットもインストールしました。同じ問題が存在する。

誰かが問題の原因を探っていますか?

+0

あなたのコードを共有し、インデックスを共有してください(プライマリではありません) –

+0

バケットの名前は 'clients'です。 'clients'の各JSONドキュメントには、' transaction_successful'というブール値のプロパティがあります。だから、これは私がやったことです: 'SELECT ID、電子メールをtransaction_successful = falseをLIMIT 100 iが維持次に200' をOFFSETクライアントから: は'その後、私はちょうど実行しようGSI' を使用しているクライアント上のPRIMARY INDEXをCREATEレコードを得るためにループ内の 'limit'によって' offset 'を増やします。 –

+0

Couchbaseサンプルバケットを問題なく照会できますか? – geraldss

答えて

0

あなたがサーバーをあまりにもひどく悩ましているためにクエリがハングアップすることがありますが、N1QL操作の回数は毎秒ずらりますが、その種類のクエリではいくつかの調整使用効率を高めます。

  1. などの特定の被覆のインデックスを作成します。transaction_successful = falseを

  2. 使用はあなたのクエリがインデックスを使用しているかどうかを確認するために、キーワードを説明し、クライアント上のインデックスinx_id_email(ID、電子メール)を作成

    。 (explain SELECT id, email FROM clients where transaction_successful = false LIMIT 100 OFFSET 200

私はあなたが実際にリレーショナルデータベースにおける主走査に相当するものをやっているので、クエリ/インデックス・ノードはあまり利用されていると信じています。

+0

クエリとインデックスノードでのCPUとRAMの使用率は非常に低いです。 (実際には何も私はちょうどテストしているように)。私はGSIや必要なインデックスを作成しました。 Explainは、クエリがインデックスを使用していることを示します。奇妙なことは、クエリが時折動作することですが、たいていの場合はハングアップします。 –

+0

CPUとRAMの使用を除きます。あなたはインデックスの下でサーバーの統計情報に何を見ていますか? (WebUI内) –

関連する問題