背景 每当交易高峰时期,可能会暴露一些平时无法发现的问题,机遇和挑战并存.下面聊聊最近解决的一个案例,因为执行计划走错导致慢查询,进而引发应用线程阻塞.线程池爆满,最后应用功能瘫痪.如何标本兼治的解决问题,需要很多思考. 问题分析 step1 应用瘫痪 用户反应某查询功能一直处于加载中,并出现错误提示.查看后台应用日志,调用远程查询服务出现大量超时. step2 线程池爆满 通过jstack命令来分析查询服务jvm线程堆栈,发现设定的线程池已经满了,而且大部分线程阻塞在了数据库查询阶段(如下图)…