cassandra写入查询在pt2s后超时

t98cgbkg  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(2042)

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

java.util.concurrent.ExecutionException: com.datastax.oss.driver.api.core.DriverTimeoutException: Query timed out after PT2S

我正在创建cqlsession作为bean

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

我将这个cqlsession注入我的mapper和其他类来运行查询
在我的datastax驱动程序中,我将3个节点的ip作为联系点,在cqlsession创建/或cassandra节点中是否需要进行任何调优,以便它们可以在高并发性下进行is写入?我能并行写多少次?
全部都是update语句,仅主键上没有任何if条件

x8goxv8g

x8goxv8g1#

你看到的超时是由于你的应用程序使集群过载,有效地进行了ddos攻击。 PT2S 是2秒写入超时。当commitlog磁盘只能占用这么多写io时,就会出现这种情况。如果你在日志或 nodetool tpstats ,这证实了commitlog无法跟上写入的速度。
如果您的集群可以支持每秒10k的写入,但是您的应用程序正在进行20k的写入,那么您需要将集群的大小增加一倍(添加更多节点)以支持吞吐量要求。干杯!

相关问题