不均衡才是热点
热点指负载集中在少数数据分片、少数磁盘或少数前端端口上,而集群整体利用率看起来并不高。它通常由三类原因造成:数据本身倾斜(某几个键被频繁访问)、分布策略不匹配(分片键选得不好,或对象大小极度不均)、以及访问模式集中(同一时段批量任务集中读同一前缀)。识别热点的关键不是看总量,而是看负载在维度上的分布是否均衡。
基本信息
| 热点维度 | 数据分片、磁盘、前端端口、租户、时间窗口 |
|---|---|
| 判别依据 | 分布离散程度与最大值偏离均值的倍数 |
| 观测手段 | 各节点/各盘指标横向对比、访问量 Top 统计 |
| 常见成因 | 分片键倾斜、大对象集中、批量任务同时段 |
| 处理方向 | 重设分布策略、拆分热点数据、错峰与限速 |
典型使用场景
- 集群整体负载不高但个别盘始终繁忙:确认是否数据倾斜
- 某业务上线后其他业务变慢:定位被挤占的公共资源
- 扩容后性能无改善:确认热点是否集中在未扩容的维度上
- 批量分析任务期间读集中:判断是否需要错峰与限速
- 容量评估:用分布而非均值预测最早耗尽的节点
热点识别的常规动作
热点识别的常规动作
iostat -x 1 3 # 横向比较各盘时延与利用率
iostat -x 1 3 | sort -k14 -r # 按利用率排序,找出最忙的盘
for d in /dev/sd*; do echo -n "$d "; cat /sys/block/${d##*/}/stat; done # 逐盘累计计数
sar -d -p 1 5 # 看历史窗口是否也是同一批盘繁忙
# 分布式场景:对比各节点上相同角色的盘,偏差越大越像热点
# 对象场景:统计访问量 Top 的桶与前缀,确认是否集中在少数键热点类型与对策
| 热点类型 | 典型表现 | 对策 |
|---|---|---|
| 数据倾斜 | 少数盘长期最忙,其他盘空闲 | 更换分片键或迁移部分数据 |
| 大对象集中 | 带宽被少数对象占满 | 拆分对象、错峰传输、单独限速 |
| 时段集中 | 固定窗口整集群负载飙升 | 错峰调度,或把任务打散到全天 |
| 前缀集中 | 同一前缀的请求打满单个节点 | 按哈希打散前缀并配合随机化命名 |
| 租户挤占 | 单一租户流量占比过高 | 设置租户级并发与带宽上限 |
判别热点要比较同角色的对象:盘与盘比、节点与节点比、租户与租户比。拿不同角色的设备互相对比通常没有意义。
处理热点时常需要迁移数据,而迁移本身会消耗带宽与磁盘队列。迁移前必须评估剩余冗余与容量水位,避免在带病状态下把集群推向更严重的拥塞。