【问题标题】:Cassandra giving time out exception after some insertsCassandra 在一些插入后给出超时异常
【发布时间】:2017-01-01 05:42:00
【问题描述】:

我正在使用 Cassandra 1.0.6 版本...我有大约 100 万个 5KB 的 JSON 对象要插入到 cassandra。随着插入的进行,cassandra 的内存消耗也会上升,直到它稳定到某个点。在一些插入(大约 2-3 lkhs)之后,ruby 客户端给了我“`recv_batch_mutate':CassandraThrift::TimedOutException”异常。

我还尝试插入 1KB 大小的 JSON 对象超过一百万次。这没有任何例外。同样在这个实验中,我绘制了 50000 次插入所用时间与 50000 次插入次数之间的图表。我发现在一些迭代之后插入的时间急剧增加,然后突然下降。这可能是由于 JVM 完成了垃圾收集。但插入 5KB 数据一百万次时不会发生同样的情况。

可能是什么问题?我正在使用的一些配置选项:- 系统:-

  • 8GB 4 核 ..

Cassandra 配置:- - 并发写入:64

  • memtable_flush_writers:4

  • memtable_flush_queue_size:8

  • rpc_server_type:同步

  • thrift_framed_transport_size_in_mb:30

  • in_memory_compaction_limit_in_mb: 64

  • multithreaded_compaction: true

我是否需要对配置进行任何更改。它与JVM堆空间有关还是由于垃圾收集?

【问题讨论】:

  • 您在做批量插入吗?如果是这样,您的批量大小是多少?

标签: exception cassandra


【解决方案1】:

您可以在 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

【讨论】:

  • 感谢您的回复.. 我有一个用例,我每天必须进行超过 200 万次读写.. 如果我增加 rpc_timeout_in_ms,它不会影响吞吐量.. 此外我使用的是单节点集群。它在多节点集群中表现良好吗??
  • 也许你真的应该看看你的 ruby​​ 客户端代码。我不熟悉 ruby​​,但我们的环境中有多个节点,使用 hector 将数百万条记录泵入集群,同时从 cassandra 节点读取,它工作正常。也许您应该向您的 ruby​​ 客户端代码提出问题,并且专家可以对此发表更多评论。在这里很难猜到,我们只是在摸索。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-06
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
  • 2019-02-06
相关资源
最近更新 更多