PT2S后Cassandra写入查询超时
我有一个cassandra单片应用程序,我想以高速率编写,从队列中读取一些有效负载。Cassandra集群有3个节点。当我开始并行处理大量消息时(通过生成线程),我得到以下异常PT2S后Cassandra写入查询超时,cassandra,datastax-java-driver,Cassandra,Datastax Java Driver,我有一个cassandra单片应用程序,我想以高速率编写,从队列中读取一些有效负载。Cassandra集群有3个节点。当我开始并行处理大量消息时(通过生成线程),我得到以下异常 java.util.concurrent.ExecutionException: com.datastax.oss.driver.api.core.DriverTimeoutException: Query timed out after PT2S 我正在创建CQLsession作为bean return CqlSes
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写入?
还有,我可以并行执行多少次写入
所有更新语句仅在主键上没有任何if条件您看到的超时是由于您的应用程序使群集过载,从而有效地进行DDoS攻击
PT2S
是2秒写入超时。当commitlog磁盘只能占用如此多的写IO时,就会出现这种情况。如果您在日志或nodetool tpstats
中看到删除的突变,则确认commitlog无法跟上写入
如果您的群集可以每秒进行10K写入,但您的应用程序正在进行20K写入,那么您需要将群集的大小增加一倍(添加更多节点),以支持吞吐量要求。干杯 你能展示一下你是如何写数据的吗?你使用批次吗?数据的来源是什么?Kafka或类似的东西?源是来自Kafka的有效负载,它被处理并写入多个表。有些是批处理,我知道分区键是相同的,有些是异步正常写入,我正在使用cassandra 4 beta。。这可能是个问题吗?不。。。它不应该链接到Cassandra 4-它受支持的版本我建议尝试DataStax的Kafka连接器()而不是手动编写的代码是的,我正在使用磁盘检查是否可以节省成本。一旦我转到SSD,问题就解决了。。