org.apache.ibatis.exceptions.PersistenceException:

PersistenceException:

生产环境问题:APP访问异常,查看日志

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 100, runningSqlCount 1 : SELECT D.ID AS id,

问题原因

架构层次是将服务拆分为多个CORE,每个CORE访问一个数据库,按业务类型划分;
有一个单独的业务项目,访问所涉及的所有数据库;此项目在执行一个数据量大约1000条数据的并发处理时严重占用数据库连接,导致APP服务在访问数据库时无法获取链接,从而导致APP访问崩溃

问题解决

临时停掉那个单独的项目

配合第三方接口联调,对方接口压测,并发量每分钟几百次请求;这边的接口是先查询再根据查询结果进行写入更新,因为想放入同一个事务中进行处理,所以没有考虑主从分离,读写分离,所有的请求都是在主库中进行操作的,导致主库请求被沾满
紧急叫停对方的接口调用,同时临时发版将该接口注释掉;改写调用方式,换为线程池,将每次的请求先放入线程池中,再从池中取需要处理的数据,处理完毕后接口返回
服务器再次奔溃,从日志上看是一个慢查询的SQL,占用从库数据库链接导致,导致CPU达到100%
ERROR 3006 (HY000): Query execution was interrupted, max_statement_time exceeded

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值