我已经将整个代码库Thrift
从CQL
使用datastax java driver 1.0.1
和cassandra 1.2.6..
节俭我从一开始就经常超时,我无法继续......采用CQL,按照我成功设计的表格和更少的超时......
有了它,我就能够插入大量数据,这些数据不能与 thrift 一起使用……但经过一个阶段后,数据文件夹大约为 3.5GB。我经常收到写超时异常。即使我再次执行相同的早期工作用例,现在也会引发超时异常。即使在重新设置后,它的随机工作也不再工作。
CASSADNRA 服务器日志
这是 cassandra 服务器部分日志调试模式,当时我收到错误:
客户例外是:
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)
基础设施: 16GB 机器,8GB 堆分配给 cassandra,i7 处理器。我正在使用单节点 cassandra,此 yaml 已针对超时进行了调整,其他一切都是默认设置:
- read_request_timeout_in_ms: 30000
- range_request_timeout_in_ms:30000
- write_request_timeout_in_ms:30000
- truncate_request_timeout_in_ms:60000
- request_timeout_in_ms:30000
用例: 我正在运行一个用例,它在 cassandra 中存储组合(我的项目术语)......目前正在测试用 100 个并行线程存储 250 000 个组合......每个线程存储一个组合......我需要支持几十个的真实案例数百万,但这需要不同的硬件和多节点集群......
存储一个组合大约需要 2 秒,包括:
- 527 插入查询
- 506 更新查询
- 954 选择查询
100个并行线程并行存储100个组合。
我发现 WRITE TIMEOUTS 的行为是随机的,有时它可以工作到 200 000,然后抛出超时,有时即使是 10k 组合也不起作用。随机行为。