一、问题现象
用户打开页面,白屏,过了30秒,很多接口报请求超时
二、问题原因
java进程里面的数据库连接池被耗尽,具体原因是调用第三方接口出现高延迟、对方应用的数据库宕机
三、排查流程
1、查看每个IP的连接数据量
SELECT id,client_ip,COUNT(client_ip) AS client_num FROM
(SELECT SUBSTRING_INDEX(HOST,':' ,1) AS client_ip,id FROM information_schema.processlist ) AS connect_info
GROUP BY client_ip ORDER BY client_num DESC;
2、找出所有执行时间超过 5 分钟的线程,拼凑出 kill 语句,方便后面查杀
SELECT CONCAT('kill ', id, ';') FROM information_schema.processlist WHERE Command != 'Sleep' AND TIME > 300 ORDER BY TIME DESC;
四、解决方案
项目引入断路器即可