就在刚刚,阿里云报警机器人提示,某接口近一分钟内异常次数远超平均值,这必然是线上环境又出幺蛾子了,有的忙。
第一时间打开日志,发现后台日志出现大量jdbc连接超时异常,当时第一反应:是不是数据库挂了,登录阿里云DMS发现数据库还是正常的,毕竟云数据库的稳定性不至于那么差。
随后通过阿里云DAS控制台发现了一条慢sql,平均执行时间高达3秒多,最高执行时间达20+秒,这在互联网业务中是绝对接受不了的。
这也就解释了为什么jdbc会有连接超时问题,因为慢sql导致连接池的线程积压,连接池数量不够了,sql查询就要等待,进而报出超时异常。
试想一下,假如这台数据库是私有化部署在自建机房中的,那么这种情况下还要去花费点时间想解决方案,难以在第一时间解决。
而云数据库厂商直接能提供一套完好的运维、监控、诊断工具,在阿里云的SQL优化建议中直接找到了该条慢SQL,并且直接给出了优化建议,就是建组合索引,甚至连DDL都给出了,而且预测出收益在6倍左右。
利用云厂商提供的诊断工具,从发现到解决此问题仅花费5分钟时间,下面是优化前后对比图:
优化前:
优化后:
高谈阔论