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

转载于:https://my.oschina.net/u/3769440/blog/3069817

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值