线上发现 Redis 机器爆了,如何优化?
线上发现 Redis 机器爆了,如何优化?
回答重点
1)首先需要排查并确定根因
通过监控工具(如Prometheus、Grafana等或云上自带的一些监控)查看 Redis 的 CPU、内存、命令执行时间或带宽等指标,确定瓶颈所在。
2)依据根因针对性解决问题
如果是内存耗尽,可能需要增加机器的内存量(升配),即临时升配解决线上问题后。

后续再走查代码和了解相关业务,判断有些数据是否有必要都存储到 Redis 中,有些数据的过期时间是否设置的过长等等来优化占用 Redis 的大小。
如果是 CPU 使用率飙升,可能是因为大量的读写请求,且涉及复杂度较高的命令,比如聚合、排序等等。此时可能需要重新发版或者回退版本下线有影响的业务。
后续再针对具体业务评估优化,是否可以将一些操作放到后端服务执行,将一些包含大量数据的大 key 拆分成多个小 key。也可以使用 Redis 集群分片,分散计算压力。
如果是带宽方面,则需要增加带宽配置,加大带宽。

除了 Redis 自身的优化之外,还可以利用本地缓存来降低 Redis 的负载。
一些热点数据可以存储在后端服务本地,请求先打到后端服务,如果命中本地缓存,则不需要请求 Redis 直接可以返回数据,这种情况就大大的减轻了 Redis 压力,解决(集群内)单机器负载高的情况。
还有,除了上述的应急处理手段之外,各组件应该都需要配置监控报警机制。例如内存的阈值,当内存占用率达到 80% 就报警(邮件、企微、钉钉、短信)等通知开发者,及时处理即将发生的问题,避免问题进一步扩大。
针对这个问题这样回答就差不多了。
扩展知识
云数据库Redis扩缩容是否会中断业务?
以下内容来自腾讯云:
Comments