gpt4 book ai didi

具有毫秒延迟的请求的 Cassandra CAS INSERT 超时

转载 作者:行者123 更新时间:2023-12-04 17:56:57 25 4
gpt4 key购买 nike

我们正在对我们的 cassandra 集群(3 个节点,复制因子 3)进行负载测试,并开始偶尔收到针对一张表上的 CAS 插入操作的 WriteTimeoutExceptions:

CREATE TABLE users.by_identity (
account ascii,
domain ascii,
identity text
PRIMARY KEY ((account, domain), identity)
);

我们正在使用 IF NOT EXISTS 子句对此表进行插入。当一个分区的负载增加到 > 10 次插入/秒时,客户端请求开始“超时”:

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

超时的 WriteType 是 CAS 并且仅为该表抛出异常。执行时间始终小于 10 毫秒。集群上的读/写超时配置为 > 1000 毫秒,并且只有此表遇到了问题。

知道我们可能遇到的问题是什么吗?为什么我们会收到具有毫秒延迟的请求超时?

我们使用的是 Cassandra v3.0.8 和 Datastax Java 驱动程序 v3.1.0。

最佳答案

很抱歉回答晚了,但您可能遇到了这个错误:https://issues.apache.org/jira/browse/CASSANDRA-9328

您可以通过减少并发性来确认,因此一次只有 1 个请求(如果您的请求非常快,您可能仍然可以每秒执行 10 个快速请求,一个接一个,只是没有任何并发​​)和保留集群设置(3 个节点,复制因子 3)或将请求速率保持在 10/s 并将集群设置更改为单个节点。如果您这样做,您可能不会看到任何小于 1000 毫秒的超时,然后更改回并发 10 和复制因子为 3 的 3 个节点,并且您可能会再次重现对于超时设置来说太低的超时。

不幸的是,错误报告没有提供任何伪代码来解决这个问题,但确实说你应该自己检查状态,看看写入是否真的发生了,然后根据它重试。如果您的写入是幂等的,也许您只需要简单地重试。

不幸的是,就我的目的而言,我们的应用程序非常复杂,我们无法在没有大量其他工作的情况下解决问题,因此我们仍然存在这个错误。如果这最终成为您遇到的问题,我很想看到一个伪代码示例,您是如何解决它的,因为它可能会为其他遇到此问题的人提供灵感。

关于具有毫秒延迟的请求的 Cassandra CAS INSERT 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39747590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com