webloic连接意外断开,导致应用异常

在应用开发后期,配置Grid数据源时遇到WebLogic连接数据库异常,表现为应用登录后无法添加用户并超时。分析发现数据库存在大量锁等待,但网络环境和WebLogic配置未发现问题。通过排查数据库连接、WebLogic配置和锁状态,最终在WebLogic数据源的测试表配置中找到解决方案,设置测试表以验证连接有效性,从而避免了180s无活动连接被断开导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

weblogic的一次问题处理
在程序开发后期,小机数据库配置完成之后,配置grid数据源,在应用服务器上搭建环境,进行最后的模拟,问题出现;
问题现象:
    应用登录系统之后,添加用户时进度条一直在刷新,无法成功;强行关闭后,无法登陆。
问题分析:
    首先在运行此操作时,检查应用的前后台日志:后台报超时。
    然后检查数据库信息,数据库中存在大量的锁等待,说明数据库中已经写入数据,但是无法提交,经测试发现,与数据库中最简单的锁状态基本一致;
    登录EM,监控数据库,效果一样,于是就认为是锁的原因。但是在测试环境上没有出现这样的问题,与生产环境相比,变化的地方是:weblogic数据源的配置,数据库的配置和网络的配置;
    进行各个排除:
    首先,网络配置。在生产环境的防火墙上配置了一个默认的180s断开不活动的session,一度认为是找到了问题的原因,但是经过与网络人员联系,这是默认的,每套环境上都有这样的策略,于是排除,其实网络环境是没有变的,是我们认为变了;同时,在从登录系统到创建用户根本不需要180s的时间,从通道的建立到错误重现,还没有受到网络策略的限制。
    但此时,已经形成了比较清晰的思路,是在应用连接上数据库之后连接建立,在运行期间突然由于某种原因,使这个session断掉;
    其次,检查weblogic的配置。由于在配置weblogic的时候,有测试按钮,当时是成功,所以怀疑的不太多,认为配置是没有问题的。
    最后,再次检查数据库,确定在此操作时数据库是否有数据写入,还是没有写入之前就已经断掉了连接。
    如何定位数据库的数据写入:
    从现象看,数据已经进来了,但是挂起了,第一次就挂起,排除锁的关系!为什么第一次数据insert 就会挂起???
    1)、杀掉数据库中所有的lock session
    2)、重启应用,重现场景
    3)、检查数据库session状态,session再次挂起
    4)、准备在程序中写入测试表,测试连接通道的有效性,若此通道无效则直接报错,若有效则进行交易
    5)、与中间件工程师交流后,发现在weblogic的数据源中就存在些测试表的地方(创建测试表同时配置连接池)
    6)、配置后,间隔180s进行再次交易,成功(彻底排除网络原因),等待10min、30min再次操作,成功。
    7)、问题再也没有重现,障碍解决
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值