运维人员收到告警短信,原本API接口正常5s内可以响应的接口,现在返回大量超时。
CRM系统故障处理过程重新梳理如下:
一、问题发现
接口性能下降:通过接口查询CSF调用链路日志信息,发现接口与Redis产品缓存的交互时长较昨日明显增加。
二、初步排查
1、系统变更核查:系统运维人员确认代码和配置均无任何变更。
2、新增配置检查:其他运维人员新增了产品相关配置,但经核查这些配置为前项限制,不会直接影响接口调用。
为快速解决问题,先将新增配置全量回退,到上一个版本
配置回退后,接口交互时间仍无明显变化,且其他渠道产品缓存交互的接口也出现变慢现象,问题并没有解决。
三、深入分析
接口逻辑:根据开发人员确认代码逻辑,接口内部查询产品信息时,首先查询JVM热区缓存,若无则查询Redis内部的信息。
调用量与耗时对比发现:,有问题的API接口调用量徒增了5倍,耗时也明显增加。
Redis集群状态:怀疑Redis集群存在问题,但因生产环境限制,未进行重启操作。
四、故障再现与排查
业务恢复与问题重现:第二天白天业务正常,接口调用量未明显增加。下午重新添加产品配置,18点刷新缓存后,出现大量超时。
配置回退效果:产品配置再次回退后,超时笔数减少。
五、根本原因分析与解决
故障分析:
Redis性能:根据log4x日志系统信息,Redis交互时间仍较长,但调用量减少后问题不明显。
JVM热区缓存:JVM热区缓存的桶大小产生频繁更新问题,更新机制存在问题。
解决措施:
调整JVM热区缓存:经讨论决定调整JVM热区缓存大小,由100M增加到110M。
代码发布与观察:代码发布后,观察API接口延时情况,至下一轮18:20时,接口延时问题明显改善,业务恢复正常。
六、总结
本次CRM系统接口超时故障是由于JVM热区缓存的桶大小设置不合理,导致在大量请求下性能下降。
通过调整JVM热区缓存大小,有效解决了接口延时问题,业务得以恢复。同时,也提示了在系统运维过程中,需要综合考虑各组件的性能和配置,确保系统稳定运行。