问题描述

某日,学校用户短时间大量登录学习,网站出现登录不上,无法显示网站内容问题。

具体表现为,网站打开迅速,资源加载迅速,但是登录、网站详情内容等涉及 API 的地方显示极慢。

定位过程

我本地从 wifi 切换到 4G 网络访问网站同样如此,排除服务器及客户端网络问题

查看后台日志,发现对某个日志表的访问量上升,初步定位为数据库问题

登录阿里云 RDS,选择现网实例 –> 日志管理 –> 慢日志明细,查询后发现出现大量慢日志,实例 CPU 占用为 97%,且无下降趋势,问题定位为数据库慢 SQL 问题

解决方法

现网实例 –> CloudDBA –> SQL 优化,贴入问题 SQL,选择 SQL 优化诊断,根据给出的索引建议,优化 SQL & 建立索引。观察数据库 CPU 占用,下降,尝试官网访问,正常,问题解决。

总结

设计用户记录的相关表,一定要预先根据可能出现的查询条件建好索引,定期检查是否有慢 SQL 出现,针对性调整索引。