本篇内容介绍了“weblogic配置数据库连接的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1、问题描述
附件同步会发送文件消息给消息中间件,然后会删除数据库中对应附件记录,不断的重复这样的过程,但是最近的附件同步好像进入了死循环,消息中间件里的附件数量一直在增加,可以看到下面的阻塞的附加数量已经到1万了,平时一天只有几百的附件,怎么会有这么大的附件数量呢
2、分析
boolean successFlag = SyncManagerService.getInstance().sendMessageToMQ(message); Log.info("[LiEMS数据同步引擎日志--附件] 发送消息队列结束 结果successFlg为" + successFlag); if (successFlag) { Log.info("[LiEMS数据同步引擎日志--附件] 删除生产库的dkdocmst_temp表记录开始"); deleteTempData(db, detailDataObj); Log.info("[LiEMS数据同步引擎日志--附件] 删除生产库的dkdocmst_temp表记录结束"); }
先把文件发送到消息中间件,然后删除数据库对应的记录,下次同步的就是以后的附件,这里怎么会重复发送呢,再者我们上面这段代码是放在同步块里的啊
synchronized (SyncBizFileDataToMQService.class) { }
初步怀疑就是数据库没有删除成功,这时就要找证据了,打开日志发现如下内容
[ERROR][2019-07-04 17:51:53][SYSTEM]net.luculent.core.database.DBException: Connection has already been closed. with sql is delete from DKDOCMST_TEMP where DOC_ID = '1146689096949694464' and TEMP_PKVAL = '1198020'
3、原因
从上面来看数据库连接被自动释放了,有个直觉就是发送附件时间太长,不活动连接多长时间就自动释放,但是发送大附件的又不是头一次,肯定是现场改了配置,于是联系现场人,现场人说优化过weblogic的参数,各种截图给我确认,可是看着都不像,最后想到weblogic的数据库连接参数都是在配置文件中的,于是打开配置文件惊奇的发现了一个配置项Inactive Connection Time-Out,配置了60,立刻让现场人去掉这个配置,现场人也和我解释是根据优化手册配置的,总结一下吧,毕竟花了很长时间排查这个问题,最后附上这个参数的含义:https://blogs.oracle.com/saas-fusion-app-performance/inactive-connection-time-out
“weblogic配置数据库连接的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。