记一次缓存瓶颈处理

背景

业务中有一个组件会产生每秒千级的数据读写,与之交互的是redis。

组件采用负载均衡,多个组件共同作业。

这几个组件都往一个内网的redis上读写。

问题

在业务高峰,用户反馈加载数据信息慢。

排查

网络正常、组件、redis所在服务器性能充足。故认为瓶颈在服务内部。

同时可知,redis支持千级的并发显然是不会成为瓶颈的。

所以判断问题在组件本身。

检索组件日志,发现与redis交互的数据操作,队列积压已到2000,。

解决

横向扩展,增加一个组件,以均摊负载

再次检索日志,发现队列积压迅速回落

进一步思考

由于没有服务内部的监控策略,所以要及时了解队列积压就比较麻烦,所以运维和开发之间就需要进一步沟通,开发在程序内部抛出具体的队列数据,然后运维这边从响应的接口获取数据,然后在平台上进行展示。

这样就可以监控组件的性能状态,可以据此考虑是否可以优化程序内部逻辑,或者需要横向扩展的数量。

 

posted @ 2018-11-08 10:47  jabbok  阅读(144)  评论(0编辑  收藏  举报