icon
Update time
Jul 21, 2022 02:53 PM
Internal status
password
故障表现
网站用户无法注册,还出现很多莫名其妙的问题
阿里云监控情况
总共8个数据库,其中6号数据库内存超过设定的最大值
但是总内存情况并没有出现高负载的情况
切换Redis集群架构后出现的问题
原因:因为php-fpm运行方式选择的静态的,常驻模式,项目中配置的域名,实际在切换之后域名解析的ip变了,但是php-fpm存在dns缓存,还是连接旧的redis服务,出现此问题
解决:重启web服务器上的php-fpm
切换为4分片集群后的内存使用情况
虽然当时网站恢复正常,但是实际上并没有解决问题,3号数据库还可能出现内存满了,然后回收内存的情况
继续通过阿里云的监控排查问题,发现是6号数据库的内存超限是由于存在大key
此大key业务上是为了录入steam新出的饰品,但是实际上没消费或者消费很慢
解决方案:业务上其实不像C5GAME一样,需要自动采集新饰品种类,在代码上删除掉往这个key推送任务的逻辑
阿里云可选的Redis服务架构
标准版
结论
- Redis集群选型的时候,初期可以选择主从架构,而不是分片架构,主从架构不会有倾斜的情况发生;当后期达到性能瓶颈之后,切换为分片集群
- 如果选用了分片集群,一定要加上针对每个分片的监控报警,防患于未然
- 应用中如果使用了List,Set,Hash等集合类型,一定要监控业务消费是否正常,避免大key的产生