OperationTimedOut:errors = {},last_host = 127.0.0.1

时间:2015-10-23 16:01:22

标签: python performance cassandra timeout cql3

我正在使用单个节点Cassandra,我打算运行一些查询以检查响应时间。在某些查询中,执行10次后发生以下错误:

OperationTimedOut: errors = {}, last_host = 127.0.0.1

所以我运行了以下命令:

sudo gedit /usr/bin/cqlsh.py

并更改了cqlsh.py文件:

# 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

但是,当我尝试再次运行查询时,cql在10s后返回相同的错误:

OperationTimedOut: errors = {}, last_host = 127.0.0.1

我必须做什么才能使查询没有应答超时?

4 个答案:

答案 0 :(得分:6)

最新版本的cassandra允许您在使用时指定cqlsh超时,而不必编辑cqlshrc文件。

cqlsh --request-timeout <your-timeout>

答案 1 :(得分:5)

您是否在cqlsh中执行这些查询?

如果是这样,您将达到客户端请求超时(不是连接超时,也不是服务器端读取请求超时)。

您可以通过在〜/ .cassandra / cqlshrc中设置一个来更改默认超时:

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

有关详细信息,请参阅https://issues.apache.org/jira/browse/CASSANDRA-7516

我从另一条评论中看到你已经知道了分页。这将是最好的方法,因为它不需要您在数据和应用程序层的内存中封送整个结果集。

答案 2 :(得分:4)

你会看到一些回复告诉你如何提高各种超时,但真正的答案是你几乎不想提出这些超时,因为如果你有一个真实的数据集,你会杀了你的具有大量长时间运行查询的服务器(或丢弃请求/突变)。与大量长时间运行的查询相比,最好使用分页和更短时间运行的查询。

答案 3 :(得分:1)

您必须更改read_request_timeout_in_ms文件中的cassandra.yaml参数。然后重启Cassandra。