我正在使用单个节点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
我必须做什么才能使查询没有应答超时?
答案 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。