OperationTimedOut:错误={},last_host=127.0.0.1
OperationTimedOut: errors={}, last_host=127.0.0.1
我正在使用单节点 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 return 10 秒后出现相同的错误:
OperationTimedOut: errors = {}, last_host = 127.0.0.1
我必须做什么才能使查询没有超时回答?
您必须更改 cassandra.yaml
文件中的 read_request_timeout_in_ms
参数。然后重启Cassandra。
您是否在 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。
我从另一条评论中看到您已经知道分页了。这将是最好的方法,因为它不需要您在数据层和应用层将整个结果集编组到内存中。
您会看到一些回复告诉您如何提高各种超时,但真正的答案是您几乎从不想提高这些超时,因为如果您有一个真实的数据集,您会毁了您的服务器(或删除 requests/mutations)有很多 long-运行 查询。最好使用分页和更短的 运行 查询,而不是大而长的 运行 查询。
最新版本的 cassandra 允许您在使用时指定 cqlsh 超时,而不必编辑您的 cqlshrc 文件。
cqlsh --request-timeout <your-timeout>
我正在使用单节点 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 return 10 秒后出现相同的错误:
OperationTimedOut: errors = {}, last_host = 127.0.0.1
我必须做什么才能使查询没有超时回答?
您必须更改 cassandra.yaml
文件中的 read_request_timeout_in_ms
参数。然后重启Cassandra。
您是否在 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。
我从另一条评论中看到您已经知道分页了。这将是最好的方法,因为它不需要您在数据层和应用层将整个结果集编组到内存中。
您会看到一些回复告诉您如何提高各种超时,但真正的答案是您几乎从不想提高这些超时,因为如果您有一个真实的数据集,您会毁了您的服务器(或删除 requests/mutations)有很多 long-运行 查询。最好使用分页和更短的 运行 查询,而不是大而长的 运行 查询。
最新版本的 cassandra 允许您在使用时指定 cqlsh 超时,而不必编辑您的 cqlshrc 文件。
cqlsh --request-timeout <your-timeout>