我正在使用Cassandra 1.0.6版本......我有大约1百万个JSON对象,每个5KB,可以插入到cassandra中。随着插入的继续,cassandra的内存消耗也会上升,直到它稳定到某一点。经过一些插入(大约2-3 lkhs)后,ruby客户端给了我“`recv_batch_mutate':CassandraThrift :: TimedOutException”异常。
我还试过插入1KB大小的JSON对象超过一百万次。这没有任何例外。同样在这个实验中,我绘制了50000个插入时间与50000个插入数量之间的图表。我发现在一些迭代之后插入的时间急剧增加并且突然下降。这可能是由JVM完成的垃圾收集造成的。但是,在插入5KB数据一百万次时也不会发生同样的情况。
可能是什么问题?我正在使用的一些配置选项: - 系统: -
Cassandra配置: - - concurrent_writes:64
memtable_flush_writers:4
memtable_flush_queue_size:8
rpc_server_type:sync
thrift_framed_transport_size_in_mb:30
in_memory_compaction_limit_in_mb:64
multithreaded_compaction:true
我是否需要对配置进行任何更改。它与JVM堆空间有关还是由于垃圾收集?
答案 0 :(得分:2)
您可以在cassandra配置文件中将rpc超时增加到更大的值,查找 rpc_timeout_in_ms 。但是你应该在连接部分看看你的ruby客户端。
# Time to wait for a reply from other nodes before failing the command
rpc_timeout_in_ms: 10000