本文介绍了过载保护功能的原理和使用方法。
背景
在促销活动等高并发场景下,数据库主节点的CPU资源容易出现负载过高的情况。为应对这一状况,通常需要对数据库进行变配(升级)。然而,在规格变更过程中可能会出现闪断或性能跌至0的情况,此时所有请求可能会被路由至主节点,从而导致主节点的CPU资源超负载,进而影响业务的连续性和稳定性。为了缓解此种情况的发生,PolarDB MySQL版在数据库代理层引入了过载保护功能。该功能能够在所有只读节点异常时,通过限制并发请求的数量来保护主节点,确保其不会因过载而影响整体服务的可用性。
使用限制
该功能要求数据库代理的版本为2.8.1或以上,支持PolarDB MySQL版 5.6,5.7,8.0。
该功能当前只支持可读可写类型的Endpoint。
当前只有在所有只读节点异常(宕机或者与主库的复制中断)的情况下,才会触发过载保护,其它场景暂时未支持。
使用说明
在控制台基本信息的集群地址区域,单击编辑配置,打开编辑地址配置页面,可开启过载保护。
基于漏桶原理,当代理端检测到集群中的所有RO节点均异常时,开始主动对集群的并发请求进行限制以达到保护主库的目的。当RO节点正常或者超出限制时间后(默认60s),取消限制。
对于限流的上限,PolarDB MySQL版集群是通过历史数据来选取合适的区间。在集群正常服务期间,代理会记录该实例主节点最近24小时的采样并发请求数。
当触发过载保护后,目前代理会使用历史数据的中位数作为上限对用户的活跃连接数进行限流。
示例
测试过程中所有只读节点复制中断,进入过载保护。在这期间流量还可以持续进来,但是不会进一步飙升。
在只读节点恢复后,过载保护结束,流量可以正常进行转发。