今天线上出现问题,查日志,发下了以下报错日志信息:
abandon connection, owner thread: DubboServerHandler-10.66.177.126:22913-thread-199, connected at : 1593076989213, open stackTrace
at java.lang.Thread.getStackTrace(Thread.java:1559)
....堆栈信息
ownerThread current state is TIMED_WAITING, current stackTrace
.....堆栈信息
后来查资料
https://blog.csdn.net/wtopps/article/details/78343659
https://blog.csdn.net/xingshi89/article/details/46539061
原来项目中使用的druid连接池配置了removeAbandoned=true,removeAbandonedTimeoutMillis=180,出错的业务代码执行了很长时间,是一个长事务,刚好这时候,数据库连接池检测到该连接存活时间已经超过了removeAbandonedTimeoutMillis设置的值,把这个连接给干掉了。
解决办法呢,是将removeAbandonedTimeoutMillis设置成更大的值,当然,也得看下,为什么相应的操作耗时会那么久,来做优化。