Consul中文文档—Consul调优思路(推荐)

本文总结了Consul性能调优的关键策略,包括硬件资源升级、配置调整(如一致性模型、raft_multiplier等),以及网络、侦测与选主优化。还介绍了其他调优技巧,如优雅退出和限流,旨在提升集群性能和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实前面的几篇文档,我根据官方文档有对 Consul压力来源,读写瓶颈因素、读写调优、调优参数等内容做过一些分析,这篇文章主要用来总结下整体思路。

当然大家也可以去看我翻译的官网文档(生产部署、读写调优),效果是一样的。建议阅读前,先简单了解下 Raft协议内容,这样可能收获更多哦。

转载请注明🙂,喜欢请一键三连哦😊

consul-log


我理解的Consul调优思路,大致分为两种: 性能调优其他表现调优

一、性能调优

我理解Consul性能调优,可以从以下两个方面见到入手:

  • 在达到集群极限阈值前, 分析瓶颈因素,增加硬件规格,比如CPU,内存,磁盘IO,网络

  • 根据实际场景,权衡下一致性和性能表现,特别是对于Heavy Read场景,能否牺牲强一致性来提高性能。

我们在压测篇中,分析过Consul几个放面的压力主要来源读、写、同步、通信,分别对应Consul的查询、注册、数据量(服务、KV、数据同步)、健康检查。

我们在Server Perfomance 可以了解到 读压力主要主要受限于CPU, 写压力主要受限于磁盘IO, 同时写的压力导致内存数据增加后, 对内存压力也会增大, 与此同时Gossip协议、Raft协议的通信也受网络延迟影响。

我们可以根据各方面压力的负载情况,适当增加【硬件规格】。 比如增加CPU、内存、选用高性能IO磁盘,增加网络带宽等。

当然除了硬件规格外,我们可以根据负载情况,调整具体配置,来达到性能调优效果

  1. : 为了权衡读性能和一致性问题, Consul提供了三种一致性模型,允许用户根据实际场景进行修改。 当修改为 Stale模式,允许过时读取,允许所有Server响应查询。

    可以通过修改discovery_max_staleallow_stale配置,允许过时读 。

    PS: 一般正常来说,虽然数据可能不是实时数据,但是过时时长会在 50ms内。 而且开启这种模式,即使在无主情况下(集群不可用),仍然是可读的 !! 参考: Consul读的一致性模型

    另外,对于读能力增强,也可以使用Consul 企业版,企业版允许可以引入了None-Votting-Server节点。

  2. : 对于写比较重的场景(注册、KV存储),可以观测Metrics(比如:consul.runtime.alloc_bytes)来确定工作大小,将内存调成 2-4倍。

二、其他调优

前三条调优能力在Consul中文中档—Consul性能调优参数有介绍。

后两个能力在Consul中文文档—服务器性能有详细介绍。

2.1 侦测失败与选主能力

通过raft_multiplier配置调整Consul集群侦测失败快速选主的能力,将影响下面的几个时间,(1-10级,默认5, 越小性能越高),如果是 1,那就是 1*1000.

如:

{
  "performance": {
    "raft_multiplier": 5
  }
}
ParamValueCalculation参数含义
HeartbeatTimeout5000ms5 x 1000ms发送心跳的指定间隔时间
ElectionTimeout5000ms5 x 1000ms选举超时时间,如果此时间内,未收到心跳,则转换为候选人状态
LeaderLeaseTimeout2500ms5 x 500ms释放Leader角色时间,此时间端已无法向其他节点提交日志

但是注意,不要盲目的调整这个参数,如果你的集群处于网络延迟较高的广域网,还是调大一点比较好。

另外请注意,设置的太小,而你的网络延迟高, CPU性能又不足(选主和心跳依赖CPU能力),会导致 Leader的稳定, 而我们Consul集群需要维护一个稳定 Leader;

所以,我们可以通过consul.raft.leader.lastContact指标 和 consul.raft.state.candidate指标, 如果 candidate > 0 或者lastContact > 200, 说明可能是 网络延迟高 或者 CPU调度能力不足

参考: 监控集群状态

2.2 优雅退出

leave_drain_time 参数,默认为5秒,优雅下线能力,退出期间过来的请求转发到其他Server.

参考: 性能参数

2.3 集群不可用重试

rpc_hold_timeout 参数,默认为7S, 允许 “无主”试下重试请求。

2.4 限流

防止Client Node无限制的强求Server Node,产生峰值,超过Server承受能力, Consul提供了Rate-Limit配置,参考 Rate-Limit

2.5 网络

由于Gossip协议,Raft协议,Watch Catalog/KV, 查询,写入这些操作需要Open Files, 大规模请求下,可以关注下Linux Open Fils, 避免耗尽文件操作符。

三、总结

  • 一般来说,在达到阈值之前,我们提高物理资源规格,会带来更高的性能表现。

  • 在定额资源下,我们可以根据实际负载情况,配合Metrics,调整一些配置,如raft_multiplier 配置, 也能实现提高性能的目的。

  • 对于其他调优,如提到得优雅退出这些功能,也能提高我们实际场景中的稳定性表现。

其他的优化,欢迎大家补充,随着了解的深入,我也会继续补充更多调优手段。

四、参考文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值