首页 > 解决方案 > 如何减少 cassandra 服务器上的负载以避免 NoHostAvailable 异常

问题描述

我正在运行 5 节点 apache cassandra 集群(3.11.4),每个节点有 48 GB RAM、12 GB 堆内存和 6 个 vcpus。即使 cassandra 服务器中没有数据处理,我也可以在 cassandra 服务器节点上看到大量负载(18 GB)。我可以有很多 GC 暂停,因此当我尝试推送时我可以看到“NoHostAvailable”异常卡桑德拉的数据。

请建议我如何减少这种负载以及如何避免连接失败“NoHostAvailable”。

ID                     : a65c8072-636a-480d-8774-2c5704361bec
Gossip active          : true
Thrift active          : true
Native Transport active: true
Load                   : 18.07 GiB
Generation No          : 1576158587
Uptime (seconds)       : 205965
Heap Memory (MB)       : 3729.16 / 11980.81
Off Heap Memory (MB)   : 12.81
Data Center            : dc1
Rack                   : rack1
Exceptions             : 21
Key Cache              : entries 2704, size 5.59 MiB, capacity 100 MiB, 1966 hits, 4715 requests, 0.417 recent hit rate, 14400 save period in seconds
Row Cache              : entries 0, size 0 bytes, capacity 0 bytes, 0 hits, 0 requests, NaN recent hit 
rate, 0 save period in seconds
Counter Cache          : entries 0, size 0 bytes, capacity 50 MiB, 0 hits, 0 requests, NaN recent hit rate, 7200 save period in seconds
Chunk Cache            : entries 25, size 1.56 MiB, capacity 480 MiB, 4207149 misses, 4342386 requests, 0.031 recent hit rate, NaN microseconds miss latency
Percent Repaired       : 34.58708788430304%
Token                  : (invoke with -T/--tokens to see all 256 tokens)

标签: cassandra

解决方案


如果您有 48Gb RAM,我建议至少便宜 16Gb 或 20。确保您使用的是 G1 GC(Java 8 中的默认值)。

但是 NoHostAvailable 可能取决于您使用的一致性级别以及其他因素。

另一方面,您可能会考虑限制您的应用程序 - 有时推得较慢可能会导致更好的吞吐量。


推荐阅读