【发布时间】:2015-02-05 21:30:42
【问题描述】:
我们有一个带有 3 节点 Cassandra 2.0.6 环的系统。随着时间的推移,该系统上的应用程序负载增加,直到环无法再处理它的限制,导致典型的节点过载故障。
我们将环的大小增加了一倍,最近甚至增加了一个节点来尝试处理负载,但仍然只有 3 个节点承担所有负载;但不是初始环的原始 3 个节点。
我们执行了adding nodes guide 中描述的bootstrap + cleanup 过程。在没有看到环负载有很大改善后,我们还在每个节点上尝试了repairs。我们的负载是这个系统上 99.99% 的写入。
这是说明问题的集群负载图表:
负载最高的表在分区键上具有高基数,我希望它可以很好地分布在 vnode 上。
编辑:节点工具信息
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 status和nodetool netstats的输出加起来吗? -
@StefanPodkowinski 添加了
nodetool info。nodetool netstats目前可能不准确,因为我们正在环上执行一些操作。 -
@maasg,查看 nodetool info 的输出看起来负载分布相当均匀。但似乎以前的数据在某些节点中没有被删除。清理是否在这些节点上运行?
-
@DesertIce
cleanup应该在原始节点上运行。集群上的负载是 99.99% 的写入。
标签: performance cassandra load cassandra-2.0