#独家
Pg jdbc 随机报错 PSQLException: ERROR: canceling statement due to user request ?

2023-06-27 0 714

生产环境随机出现 canceling statement due to user request 报错
使用的是 springboot + mybatis-pus + druid

网上检索到的原因:jdbc 的链接定时器导致,通过设置 defaultStatementTimeOut 可以解决。

但是通过上述的方法,这个报错还是在不间断的随机出现,如何解决?

报错的直观问题时,在使用一个数据库链接执行sql的时候,sql还没有执行完,链接被驱动主动关闭了。
所以有一下几种可能,可以排查一下

  • sql执行的时间太长了,链接配置的timeout时间太短了,所以主动关闭了。这种情况下,每次exception的sql如果都是同一个,那需要优化sql,如果不是同一个,可以观测下数据库状态,可能压力太大,资源不足,或者网络问题,导致sql执行时间大于预期,链接被关闭了。
  • autocommit=false,如果没有配置自动提交,transaction最后也没有正确关闭链接(比如Exception了),可能会导致链接被扔回连接池,然后被其他sql复用,这个时候因为关闭计时是在上一个事务的时候开始的,所以可能新的sql执行过程中,链接超时关闭了。这种情况,按说还是代码上有些问题,可以检查一下,不过可以通过配置autocommit=true,或者try/catch/final一类的手动关闭connection,也许能绕过。
  • 检查一下相关的版本,保不齐是连接池/驱动或者orm的bug导致的,可以升级一下版本试试,也许报错就被解决了,但主要原因还是sql执行时间和statment的超时时间冲突了,还是需要确保下代码质量

你需要了解下这个系统函数:
pg_cancel_backend(pid int)

可能的原因是:
后台监控运维系统,检查到特定的查询存在运行的相关风险,并通过pg_cancel_backend系统函数取消了该查询。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 Pg jdbc 随机报错 PSQLException: ERROR: canceling statement due to user request ? https://www.jkxiazai.com/1875.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务