2015-10-23 2 views
5

私は単一のノードCassandraを使用していますが、応答時間を確認するためにいくつかのクエリを実行するつもりです。実行の10Sは私に次のようなエラーが発生した後、一部のクエリでは、:、しかしOperationTimedOut:errors = {}、last_host = 127.0.0.1

# cqlsh should run correctly when run out of a Cassandra source tree, 
# out of an unpacked Cassandra tarball, and after a proper package install. 
cqlshlibdir = os.path.join(CASSANDRA_PATH, 'pylib') 
if os.path.isdir(cqlshlibdir): 
    sys.path.insert(0, cqlshlibdir) 

from cqlshlib import cql3handling, cqlhandling, pylexotron, sslhandling 
from cqlshlib.displaying import (ANSI_RESET, BLUE, COLUMN_NAME_COLORS, CYAN, 
           RED, FormattedValue, colorme) 

from cqlshlib.formatting import (DEFAULT_DATE_FORMAT, DEFAULT_NANOTIME_FORMAT, 
           DEFAULT_TIMESTAMP_FORMAT, DateTimeFormat, 
           format_by_type, format_value_utype, 
           formatter_for) 

from cqlshlib.tracing import print_trace, print_trace_session 
from cqlshlib.util import get_file_encoding_bomsize, trim_if_present 

DEFAULT_HOST = '127.0.0.1' 
DEFAULT_PORT = 9042 
DEFAULT_CQLVER = '3.3.1' 
DEFAULT_PROTOCOL_VERSION = 4 
DEFAULT_CONNECT_TIMEOUT_SECONDS = 240 

DEFAULT_FLOAT_PRECISION = 5 
DEFAULT_MAX_TRACE_WAIT = 300 

OperationTimedOut: errors = {}, last_host = 127.0.0.1 

だから私は、次のコマンドを実行しました:

sudo gedit /usr/bin/cqlsh.py 

をそしてcqlsh.pyファイルを変更しました再度クエリを実行しようとすると、10秒後に同じエラーが返されます。

OperationTimedOut: errors = {}, last_host = 127.0.0.1 

クエリに応答タイムアウトがないようにするために必要なことは何ですか?

答えて

5

これらのクエリはcqlshで実行していますか?

もしそうなら、接続要求のタイムアウト(接続タイムアウトやサーバー側の読み取り要求タイムアウトではありません)に当たっています。

あなたは〜/ .cassandra/cqlshrcに1を設定して、デフォルトのタイムアウトを変更することができます

[connection] 
client_timeout = 20 
# Can also be set to None to disable: 
# client_timeout = None 

は詳細についてhttps://issues.apache.org/jira/browse/CASSANDRA-7516を参照してください。

他のコメントから、あなたは既にページングを認識しています。これは、データおよびアプリケーション層でメモリ内の結果セット全体をマーシャリングする必要がないため、最良の方法です。

+0

〜/ .cassandra/cqlshrcのデフォルトのタイムアウトを変更する必要があるディレクトリですか?私は見つけることができません... –

+1

私はRDBMSとカサンドラの間のクエリパフォーマンスの比較を行っているので、私は "ページング"を使用するつもりはありません。私は、クエリの完全な結果を得て、応答時間をチェックしようとしています... "ページング"オプションでは、私はそれが可能ではないと思う... –

+1

指定したパス(〜/ .cassandra/cqlshrc)に入れるか、cqlshコマンドラインで代替パスを指定するか、https://github.com/apache/cassandra/blob/cassandra-2.2.3/ bin/cqlsh.py#L174 –

1

cassandra.yamlファイルのread_request_timeout_in_msパラメータを変更する必要があります。そしてカサンドラを再開してください。

+0

私は[read_request_timeout] '5000000' の変更されているとエラーが続きます。私は1つのノードで作業していますが、問題を解決するはずの 'cqlsh.py'ファイルを変更すると思っていますが... –

+0

あなたのクエリは何ですか? – DineMartine

+0

編集しなければならないcassandra.yamlファイルは、cqlshクライアントではないノードの1つです。あなたがしたことですか?ノードを再起動しましたか? – DineMartine

4

さまざまなタイムアウトを発生させる方法を示すいくつかの回答がありますが、本当の答えは、実際のデータセットを持っているとサーバーを強制終了するため、 (または要求/突然変異の削除)を長時間実行するクエリがたくさんあります。ページングとより短期間のクエリを使用するほうが、長時間実行される膨大なクエリよりも優れています。

+1

ベンチマーク中に対話型検査のためにタイムアウトを必要としました。だから、 "本当の答え"は見る人の目に... ...-) –

6

最新のバージョンのcassandraでは、cqlshrcファイルを編集する代わりに、cqlshタイムアウトを指定することができます。

cqlsh --request-timeout <your-timeout>

関連する問題