我有一个cassandra设置,带有6节点环单DC和RF:6和读:CL:1。现在,有时如果某个特定节点获得了大量请求,而这些请求又会被传递到所有节点(RF的原因),那么它将继续使用CMS进行压缩,然后最终使用ParNew,其中整个环处于挂起状态,其中转而使它变得无法使用。我发现我们只能通过增加堆大小或在cassandra代码中调整来解决它,只能从本地节点读取(因为RF:6可以保证每个节点具有相同的数据,但必须单独处理修复等)。
如何计算Cassandra节点的堆大小(我有两个Keyspace,除了System CF之外总共14个CF)。按照cassandra wiki,这应该是堆大小至少:memtable_throughput_in_mb * 3 * number of hot CFs + 1G + internal caches
其中memtable_throughput_in_mb = 128mb我的设置。特定CF的最大行大小在这里很重要。我没有使用任何行或密钥缓存。有人可以建议我一样。