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 条件,仅针对主键
您看到的超时是由于您的应用程序使集群过载而导致的,从而有效地进行了 DDoS 攻击。
PT2S是 2 秒写入超时。总有一天,提交日志磁盘只能承受一定量的写入 IO。如果您在日志 或 中看到丢失的突变nodetool tpstats,则确认提交日志无法跟上写入。
如果您的集群可以维持 10K 写入/秒,但您的应用程序正在执行 20K 写入,那么您需要将集群大小加倍(添加更多节点)来支持吞吐量要求。干杯!
| 归档时间: |
|
| 查看次数: |
24990 次 |
| 最近记录: |