分布式缓存服务 DCS-Redis实例CPU使用率达到100%的原因:查找并禁用高消耗命令

时间:2024-03-29 10:56:38

查找并禁用高消耗命令

使用了keys等消耗资源的命令,高消耗资源的命令即时间复杂度为O(N)或更高的命令,通常情况下,命令时间复杂度越高,在执行时消耗的资源越高,这会导致CPU使用率超高,容易触发主备倒换。关于各命令对应的时间复杂度信息请参见Redis官网。例如,使用了keys等消耗资源的命令,导致CPU超高,建议客户改成scan命令或者禁用keys命令。

  1. 通过性能监控功能,确认CPU使用率高的具体时间段。

  2. 通过下述方法,找出高消耗的命令。

    • 慢查询功能会记录执行超过指定时间阈值的命令,通过分析慢查询的语句和执行时长可帮助您找出高消耗命令,具体操参见慢查询
    • 通过实例诊断功能,选择CPU冲高的时间点进行诊断后,可以看到报告中的对应时间段命令的执行情况以及CPU耗时百分比,具体操作参见实例诊断

  3. 处理措施。

    • 评估并禁用高风险命令和高消耗命令,例如FLUSHALLKEYSHGETALL等。
    • 优化业务,例如避免频繁执行数据排序操作。
    • 可选:根据业务情况,选择下述方法对实例进行调整:
      • 调整实例为读写分离实例,对高消耗命令或应用进行分流。
      • 扩容实例增强实例处理能力。

support.huaweicloud.com/dcs_faq/dcs-faq-0427020.html