Ped*_*nha 7 python performance timeout cassandra cql3
我正在使用单个节点Cassandra,我打算运行一些查询以检查响应时间.在某些查询中,执行10次后发生以下错误:
OperationTimedOut: errors = {}, last_host = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
所以我运行了以下命令:
sudo gedit /usr/bin/cqlsh.py
Run Code Online (Sandbox Code Playgroud)
并更改了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
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试再次运行查询时,cql在10s后返回相同的错误:
OperationTimedOut: errors = {}, last_host = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
我必须这样做,以便查询没有应答超时?
最新版本的cassandra允许您在使用时指定cqlsh timeout,而不必编辑cqlshrc文件.
cqlsh --request-timeout <your-timeout>
你在cqlsh中执行这些查询吗?
如果是这样,您将达到客户端请求超时(不是连接超时,也不是服务器端读取请求超时).
您可以通过在〜/ .cassandra/cqlshrc中设置一个来更改默认超时:
[connection]
client_timeout = 20
# Can also be set to None to disable:
# client_timeout = None
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅https://issues.apache.org/jira/browse/CASSANDRA-7516.
我从另一个评论中看到你已经知道了分页.这将是最好的方法,因为它不需要您在数据和应用程序层的内存中编组整个结果集.