performance - 使用 Vnode 重新平衡 Cassandra 环

标签 performance cassandra load cassandra-2.0

我们有一个带有 3 节点 Cassandra 2.0.6 环的系统。随着时间的推移,该系统上的应用程序负载不断增加,直到达到环无法再处理的极限,从而导致典型的节点过载故障。

我们将环的大小增加了一倍,最近甚至还添加了一个节点,以尝试处理负载,但仍然只有 3 个节点承担所有负载;但不是初始环的原始3个节点。

我们执行了 adding nodes guide 中描述的 bootstrap + cleanup 过程。 。在没有看到环负载有太大改善后,我们还尝试对每个节点进行修复。我们的负载是该系统上 99.99% 的写入。

下面是说明该问题的集群负载图表:

enter image description here

负载最高的表在分区键上具有较高的基数,我希望它能很好地分布在虚拟节点上。

编辑:nodetool信息

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens  Owns   Host ID                               Rack
UN  x.y.z.92     56.83 GB   256     13.8%  x-y-z-b53e8ab55e0a  rack1
UN  x.y.z.253    136.87 GB  256     15.2%  x-y-z-bd3cf08449c8  rack1
UN  x.y.z.70     69.84 GB   256     14.2%  x-y-z-39e63dd017cd  rack1
UN  x.y.z.251    74.03 GB   256     14.4%  x-y-z-36a6c8e4a8e8  rack1
UN  x.y.z.240    51.77 GB   256     13.0%  x-y-z-ea239f65794d  rack1
UN  x.y.z.189    128.49 GB  256     14.3%  x-y-z-7c36c93e0022  rack1
UN  x.y.z.99     53.65 GB   256     15.2%  x-y-z-746477dc5db9  rack1

编辑:tpstats(节点高负载)

Pool Name                    Active   Pending      Completed   Blocked  All time blocked
ReadStage                         0         0       11591287         0                 0
RequestResponseStage              0         0      283211224         0                 0
MutationStage                    32    405875      349531549         0                 0
ReadRepairStage                   0         0           3591         0                 0
ReplicateOnWriteStage             0         0              0         0                 0
GossipStage                       0         0        3246983         0                 0
AntiEntropyStage                  0         0          72055         0                 0
MigrationStage                    0         0            133         0                 0
MemoryMeter                       0         0            205         0                 0
MemtablePostFlusher               0         0          94915         0                 0
FlushWriter                       0         0          12521         0                 0
MiscStage                         0         0          34680         0                 0
PendingRangeCalculator            0         0             14         0                 0
commitlog_archiver                0         0              0         0                 0
AntiEntropySessions               1         1              1         0                 0
InternalResponseStage             0         0             30         0                 0
HintedHandoff                     0         0           1957         0                 0

Message type           Dropped
RANGE_SLICE                  0
READ_REPAIR                196
PAGED_RANGE                  0
BINARY                       0
READ                         0
MUTATION              31663792
_TRACE                   24409
REQUEST_RESPONSE             4
COUNTER_MUTATION             0

如何进一步解决此问题?

最佳答案

您需要在属于环的先前节点上运行nodetool cleanup。 Nodetool cleanup 将删除节点当前不拥有的分区键。

似乎添加节点后,键尚未删除,因此导致之前节点的负载更高。

尝试运行

nodetool cleanup

     on the previous nodes

关于performance - 使用 Vnode 重新平衡 Cassandra 环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28341218/

相关文章:

cassandra - 如何使用 CQL (Cassandra) 查询集合中用户定义类型的字段

performance - Web 服务器基准测试的简单工具?

java - 由于反射导致的 Hibernate 和 Spring 的性能开销

SQLite:大表上的 COUNT 速度慢

java - Cassandra 中的单数据列与多列

java - 如何在没有第三方库的情况下完全解析 HTML?

jquery - 防止加载隐藏 iframe 的内容

mysql - 如何对 MySQL 慢速查询进行故障排除/调试?

java - Android 中快速、低功耗/CPU 字符串匹配

Cassandra 更改主键与触发多个选择查询