【问题标题】:Cassandra LWT ReadTimeoutException or WriteTimeoutExceptionCassandra LWT ReadTimeoutException 或 WriteTimeoutException
【发布时间】:2018-06-09 07:02:12
【问题描述】:

我试图在同一个表中插入两个进程。因此,首先我尝试使用 LWT 输入分区和聚类键值,如果成功,则意味着该进程可以在该时间桶内继续该工作,否则另一个进程已经完成该桶。 LWT 的一致性级别设置为 One,串行一致性级别设置为 LOCAL_SERIAL。

如果第一个插入成功,则工作完成,另一个插入完成,一致性级别也为 1。第一条语句有一个 TTL 语句,用于执行工作的进程在中间终止的情况,该行在 TTL 为 90 之后将为空。

即使我运行单个进程,LWT 也会因读取或写入超时异常而失败。

这是准备好的声明和我得到的异常。任何帮助表示赞赏。

com.datastax.driver.core.exceptions.ReadTimeoutException: 
Cassandra timeout during read query at consistency LOCAL_QUORUM 
(2 responses were required but only 1 replica responded)

com.datastax.driver.core.exceptions.WriteTimeoutException: 
Cassandra timeout during write query at consistency LOCAL_SERIAL 
(2 replica were required but only 1 acknowledged the write)

statement = {DefaultPreparedStatement@10844} 
 preparedId = {PreparedId@10886} 
 query = "INSERT INTO event_store(evt_type, rcncl_date, rcncl_ts) values( ?, ?, ?) IF NOT EXISTS USING TTL 90;"
 queryKeyspace = "test"
 routingKey = null
 consistency = {ConsistencyLevel@10882} "ONE"
 serialConsistency = {ConsistencyLevel@10883} "LOCAL_SERIAL"
 traceQuery = false
 retryPolicy = null

【问题讨论】:

    标签: cassandra lwt


    【解决方案1】:

    您的集群的响应似乎存在某种问题。节点超时(由于过载或其他类型的问题)或某些节点实际上已关闭。另一个原因可能是您的复制因素,因此请确认您至少有许多节点,如您的 RF。

    执行nodetool status 以检查节点的状态。还可以使用nodetool info 检查它们是否有异常(如果有,请检查之后的日志,您可以使用 grep 查找exception 以帮助缩小范围)。

    在过载的情况下,应该可以看到nodetool tpstats,查找大量的 PENDING 或 BLOCKED/ALL TIME BLOCKED。

    【讨论】:

    • 不幸的是,我现在无法获得 YAML 配置并运行任何工具。我已经提出请求,看看我是否可以访问节点工具
    猜你喜欢
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    相关资源
    最近更新 更多