githubEdit

4. 线上效果

算法配置如下

loadBalancerLoadSheddingStrategy=org.apache.pulsar.broker.loadbalance.impl.AvgShedder
loadBalancerLoadPlacementStrategy=org.apache.pulsar.broker.loadbalance.impl.AvgShedder
loadBalancerAvgShedderHitCountHighThreshold = 2
loadBalancerAvgShedderHitCountLowThreshold = 8
loadBalancerAvgShedderLowThreshold = 15
loadBalancerAvgShedderHighThreshold = 40
maxUnloadPercentage = 0.5
minUnloadMessageThroughput = 10 * 1024 * 1024
minUnloadMessage = 10000 

由于我们已禁用对内存使用率及直接内存使用率的考量,故而仅剩下网卡使用率与 CPU 使用率可供关注。鉴于我们的网卡性能较为出色,性能瓶颈在于 CPU,所以为 broker 打分的依据是 CPU 使用率。

因此我们添加如下panel:CPU使用率极差,来监控集群里最高载与最低载broker之间的负载差距。

max(pulsar_lb_cpu_usage) - min(pulsar_lb_cpu_usage)

从数据表现来看,尽管 CPU 使用率极差偶有突破 15% 这一阈值的情况,但由于存在触发次数的限制条件,在一个月内仅触发了一次 bundle unload 操作,系统稳定性完全契合我们的预期标准。同时,系统均衡性同样达标,CPU 使用率极差始终被控制在 15% 以内

你可以根据自己的实际情况来配置阈值,如果希望集群的机器之间资源使用率更加均衡,可以进一步调小loadBalancerAvgShedderHitCountLowThreshold到10,与此同时,为缓解因该阈值降低可能导致的 bundle unload 频率增加问题,可相应地进一步调大 loadBalancerAvgShedderHitCountLowThreshold 。

这里也顺便展示一下最大与最小流量吞吐的比值、最大与最小消息速率的比值。

可以看到,比值控制在良好的范围内。

Last updated

Was this helpful?