12

と のリングに 5 つのノードがSimpleTopologyStrategyありreplication_factor=3ます。ストレス ツールを使用して 1M 行を挿入しました。を使用してcqlshで行数を読み取ろうとしているとき

SELECT  count(*) FROM  Keyspace1.Standard1 limit 1000000;

エラーで失敗します:

リクエストは rpc_timeout 内に完了しませんでした。

制限 100000 で取得します。500000 でも失敗
します。すべてのノードが稼働しています。を増やす必要がありrpc_timeoutますか?

助けてください。

4

3 に答える 3

13

サーバー側でリクエストがタイムアウトしているため、このエラーが発生します。他の人が指摘しているように、これは Cassandra では非常にコストのかかる操作であることを知っておく必要があります。

それでも、本当にこれを行いたい場合は、/etc/cassandra/cassandra.yamlファイルを更新してrange_request_timeout_in_msパラメーターを変更する必要があります。これは、すべての範囲クエリに有効です。

40 秒のタイムアウトを設定する例:

range_request_timeout_in_ms: 40000

おそらく、クライアント側でも調整する必要があります。クライアントとして使用cqlshする場合、これは cqlsh の構成ファイルを作成/更新し、セクションにパラメーターを~/.cassandra/cqlshrc追加することで実現されます。client_timeoutconnection

40 秒のタイムアウトを設定する例:

[connection]
client_timeout=40
于 2015-08-13T16:11:31.017 に答える
6

1M 行の読み取りには長い時間がかかるため、タイムアウトが発生している可能性があります。このように count を使用しないでください。すべてのデータを読み取る必要があるため、非常にコストがかかります。たくさんのアイテムをカウントする必要がある場合は、Cassandra カウンターを使用してください。

また、Cassandra ログをチェックして、他に問題がないことを確認する必要があります。Cassandra の例外によって、クライアントでタイムアウトが発生することがあります。

于 2013-03-06T08:08:10.530 に答える
2

おおよその行数で生活できる場合は、Cassandra の列ファミリーの行数に対するこの回答をご覧ください。

于 2013-08-28T08:57:17.667 に答える