【问题标题】:temporary cassandra write timeout exception on increasing load增加负载时临时 cassandra 写入超时异常
【发布时间】:2016-08-16 17:01:16
【问题描述】:

我们有一个 5 节点集群,每个集群配置 128 GB RAM,24 核 CPU。假设每秒写入 100k 次,没有写入超时异常,但是一旦负载增加到 125k 或更多,超时异常就会开始蔓延。这些异常会持续一两分钟,然后最终集群稳定。然后它将继续正常工作,没有任何异常。

所以我需要了解,在负载突然飙升期间出现超时异常的原因是什么?

缓存已经满了,突然负载增加了,所以开始出现写异常。如果是这样的话,那么我应该将内存刷新时间从 10 秒减少到 5 秒。这会不会有其他影响?

【问题讨论】:

    标签: cassandra timeout


    【解决方案1】:

    WriteTimeOut 异常是由于节点过载,即在高摄取率下,节点必须做更多工作,即使用更多 CPU/IO 资源,这意味着它无法在指定的超时时间内完成操作,从而导致 writeTimeOut 异常。在这种情况下,我认为减少 Memtable 刷新周期不会有帮助(它甚至可能会变得更糟,因为您将更频繁地执行磁盘 IO 导致更多资源使用)。您要么需要向集群添加更多节点(如果您会经常看到这些峰值),要么需要在应用程序中使用某种方式来限制您对 C* 的写入(如果您负担得起的话)。请注意,C* 有一个叫做 Hinted Handoff 的东西,这意味着如果协调节点发现副本节点超载,它将为您的写入存储行突变,并稍后尝试重播它。但是这个存储的提示不计入 CONSISTENCY_LEVEL(除非您使用 ANY)。有非常好的 DataStax 博客文章关于提示切换,您可以查看 here。

    所以 C* 正在尽最大努力处理这些峰值,但如果问题持续存在,那么您需要添加更多节点或限制写入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-21
      • 2021-04-12
      • 2018-12-25
      • 2017-07-29
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多