线上Redis的两次事故
背景:
1、Redis一万的QPS;
2、Redis的流量32M/s;
3、购买的阿里云Redis内存16G;
4、laravel框架
过程:
事故一: Redis达到16G上限后,把volatile-lru策略更换成allkeys-lru策略, 坚持了一天后,再次事故。(为什么的更换新策略,之前一个项目,同样的策略一直运行非常稳定)
解决方式:
1)没有其它好的解决办法, 为了稳定性, 内存扩容至32G。
2)查找Redis内存上升快的原因,Cache::tags生成多份一样的数据, 请大家谨慎使用。
事故二:Redis流量有几天一直100%, 但是一直没有出现问题。结果突然某个时间节点出现事故。
解决方式:
1)流量扩容至90M/s,项目恢复稳定,项目流量一直保持在85M/s。
2) 优化PHP代码,对高频请求value做字节降小操作。找到一个频率请求非常高的接口,对它优化后流量后从85M/s下降至40M/s。
事后讨论结论:
1)前端部分数据本地化;
2)合并API请求;
3)减小非必要的API请求;
4)PHP对Redis必须设置过期时间,并且优化Cache::tags的使用;
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: