我已将整个代码库更改Thrift为CQL使用datastax java driver 1.0.1和cassandra 1.2.6..
随着节俭,我从一开始就经常超时,我无法继续......采用CQL,按照我的设计表,我获得了成功,减少了超时....
有了这个,我能够插入大量数据,这些数据与thrift无法合作......但经过一个阶段,数据文件夹大约3.5GB.我经常写入超时异常.即使我再次使用相同的早期工作用例,现在也会抛出超时异常.它的随机工作即使在新设置之后也不会再工作.
CASSADNRA服务器日志
这是cassandra服务器部分日志DEBUG模式,然后我收到错误:
客户例外是:
Caused by: com.datastax.driver.core.exceptions.WriteTimeoutException: Cassandra timeout during write query at consistency ONE (1 replica were required but only 0 acknowledged the write)
at com.datastax.driver.core.exceptions.WriteTimeoutException.copy(WriteTimeoutException.java:54)
at com.datastax.driver.core.ResultSetFuture.extractCauseFromExecutionException(ResultSetFuture.java:214)
at com.datastax.driver.core.ResultSetFuture.getUninterruptibly(ResultSetFuture.java:169)
at com.datastax.driver.core.Session.execute(Session.java:107)
at com.datastax.driver.core.Session.execute(Session.java:76)
Run Code Online (Sandbox Code Playgroud)
基础设施: 16GB机器,8GB堆给cassandra,i7处理器..我使用SINGLE节点cassandra与yaml调整超时,其他一切都是默认的:
使用案例: 我正在运行一个用于存储Cassandra组合(我的项目术语)的用例....当前测试存储250个组合与100个并行线程..每个线程存储一个组合...真实情况我需要支持数十数百万,但需要不同的硬件和多节点集群...
在存储一个组合需要大约2秒,涉及:
100个并行线程并行存储100个组合.
我已经发现WRITE TIMEOUTS的行为是随机的,一段时间它会工作到200 000然后抛出超时,有时甚至不能用于10k组合.随机行为.