use*_*801 10 timeout cassandra datastax-java-driver
我已将整个代码库更改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组合.随机行为.
只是花了一些时间阅读我的 dev cassandra 节点配置 yaml,因为我也遇到了类似的问题。当我尝试将大约 30 亿个 sha2 哈希值加载到只有 600MB RAM 的开发节点时,我的系统停止运行并超时;)
我通过减少缓存大小并在刷新之前等待等来修复它。这使得节点的写入速度变慢,但它变得稳定。然后我就可以加载所需数量的数据。
但抱歉我不知道有哪些选项。我记得我读过有关性能调整以及如何根据 cpu 核心、内存等计算系统正确值的文档。
我遇到的问题是缓存写入磁盘的速度不够快,因此它开始阻塞所有内容。在说了“更频繁地写入并让新请求等待”之后,节点变得稳定,而我的导入速度变得有点慢。
看来 cassandra 的默认选项适用于在多节点集群中具有大量核心的重型内存机器,可以分散负载。要让它在本地开发环境中运行,请将其拧紧。它是开发环境而不是生活系统,花点时间喝一两杯咖啡;)
希望有助于以正确的方式思考
| 归档时间: |
|
| 查看次数: |
24792 次 |
| 最近记录: |