PT2S 后 Cassandra 写入查询超时

use*_*785 7 cassandra datastax-java-driver

我有 cassandra 整体应用程序,我想以高速率写入并从队列中读取一些有效负载。Cassandra集群有3个节点。当我开始并行处理大量消息(通过生成线程)时,我遇到以下异常

java.util.concurrent.ExecutionException: com.datastax.oss.driver.api.core.DriverTimeoutException: Query timed out after PT2S
Run Code Online (Sandbox Code Playgroud)

我正在将 CQLsession 创建为 bean

return CqlSession.builder().addContactPoints(contactPoints)
            /*.addContactPoint(new InetSocketAddress("localhost", 9042))*/
            .withConfigLoader(new DefaultDriverConfigLoader()).withLocalDatacenter("datacenter1")
            .addTypeCodecs(new CustomDateCodec())
            .withKeyspace("dev").build();
Run Code Online (Sandbox Code Playgroud)

我将此 CqlSession 注入到我的映射器和其他类中以运行查询

在我的 datastax 驱动程序中,我已给出 3 个节点的 ip 作为接触点 在 CQLsession 创建/或我的 cassandra 节点中是否需要进行任何调整,以便它们可以以高并发进行写入?另外我可以并行执行多少次写入?

全部都是更新语句,没有任何 if 条件,仅针对主键

Eri*_*rez 8

您看到的超时是由于您的应用程序使集群过载而导致的,从而有效地进行了 DDoS 攻击。

PT2S是 2 秒写入超时。总有一天,提交日志磁盘只能承受一定量的写入 IO。如果您在日志 或 中看到丢失的突变nodetool tpstats,则确认提交日志无法跟上写入。

如果您的集群可以维持 10K 写入/秒,但您的应用程序正在执行 20K 写入,那么您需要将集群大小加倍(添加更多节点)来支持吞吐量要求。干杯!