【影响范围】
业务服务a不可用
【故障表现】
业务操作超时,导致服务不可用。
【处理过程】
7.33钉钉开始报警
7.48用户首次反馈问题
7.53接到报警电话,然后查看钉钉报警,判断是服务挂了。
7.57重启了服务,问题仍然存在。
7.57开发排查问题,发现实时统计时间很长,达到了6s, 判断是线程负载过重影响到了业务线程。
8.02测试回滚服务失败,原因是没有同步回滚配置。
8.19修改线程参数。
8.24重新发布服务后恢复正常。(因为回滚失败所以耽误了几分钟)
【原因分析】
直接原因: 针对业务服务同步操作较慢的问题,原先已调整了队列参数,由原来延迟2小时提升至延迟10分钟, 但对于早高峰并发缺乏充分评估,造成服务线程被占满,服务响应超时,导致服务被迫下线。
根本原因: 业务表没有添加索引,单个更新sql的执行时间达到4s左右。
回滚失败原因:服务没有同步最新的回滚配置。
其他原因: 缺少对早高峰并发的精确评估,缺少必要的性能测试
【改进措施】
1、 业务表添加索引,执行时间降到毫秒级。
2、将业务服务统计服务独立部署,与业务服务解耦,避免统计服务异常造成业务服务雪崩。
3、将所有服务都排查一遍,确保都同步最新回滚配置。
4、对涉及并发处理业务的修改,需要必要的性能测试。
5、慢查询sql报警缺失(需要运维支持)。
6、对业务报警的频率支持分级报警。