- 浏览: 37604 次
- 性别:
- 来自: 北京
最新评论
声明:该博文转自http://maping930883.blogspot.com,热爱java,热爱生活
WebLogic Server中,数据库连接池是一个经常出问题的地方。下面就总结一下出问题的原因和解决办法。
1.数据库连接泄漏
此类问题一般都是由于开发人员没有正确关闭数据库连接造成的。比如,使用完Connection后,没有调用Connection.close()方法。
1.1. 诊断方法
在Console中,找到Connection Pools Tab 和Diagnostics,设置以下属性(不同版本可能略有区别)
Enable Connection Leak Profiling 启用连接池泄漏的监控。
Enable Connection Profiling 启用连接池监控。
Inactive Connection Timeout 100 表示100秒后强制回收无效连接。默认0,表示使用完才释放回连接池。
无需重启,查看server的log,查找“A JDBC pool connection leak was detected”,如果有,看看是哪个类引起的。
下面是一个数据库连接泄漏的例子:
A JDBC pool connection leak was detected.
A connection leak occurs when a connection obtained from the pool was not closed explicitly by calling close() and then was disposed by the garbage collector and returned to the connection pool.
The following stack trace at create shows where the leaked connection was created.
Stack trace at connection create:
at weblogic.jdbc.wrapper.JTAConnection.init(JTAConnection.java:90)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:468)
at weblogic.jdbc.jta.DataSource.connect(DataSource.java:410)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:344)
at troubleshooting.servlets.JdbcConnections.service(JdbcConnections.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7047)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3902)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
问题解决后,把三个属性设置回先前的值。
1.2. 解决方法
正确的关闭数据库连接。具体代码如下:
Connection conn = null;
ResultSet rs = null;
preparedStatement pss = null;
try {
conn = dataSource.getConnection(USERID,pASSWORD);
pss = conn.prepareStatement("SELECT SAVESERIALZEDDATA FROM SESSION.pINGSESSION3DATA WHERE SESSIONKEY = ?");
pss.setString(1,sessionKey);
rs = pss.executeQuery();
pss.close();
} catch (Throwable t) {
// 错误处理
} finally {
try {
if (conn != null) conn.close();
} catch (Exception e){}
}
2.数据库连接不够用
导致数据库连接不够用的原因主要有:
(1)某些程序占用connection时间过长,如果多个用户同时使用这些程序,则会导致连接不够用。
(2)线程死锁,无法释放connection。
2.1. 诊断方法
(1)监控参数:Waiting For Connection High Count
[domain_name]-> Enviroment -> Servers -> [Server] -> Monitoring -> JDBC查看参数:Waiting For Connection High Count
如果没有此参数,手工添加进来,该参数表示在没有可用连接的情况下,应用程序等待连接的最大个数。
调整后的连接池最大值 = 调整前的连接池最大值 + Waiting For Connection High Count。
一般来说,数据库连接池的大小与最佳并发用户数相当。
(2)在Server Log中,明确抛出下列异常:
java.sql.SQLException: Internal error: Cannot obtain XAConnection weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool BankConnectionPool to allocate to applications, please increase the size of the pool and retry..
at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1493)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:455)
at weblogic.jdbc.jta.DataSource.connect(DataSource.java:410)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:344)
at troubleshooting.servlets.JdbcConnections.service(JdbcConnections.java:80)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7047)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3902)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
如果此时观察connection的监控,会发现所有connection 都是Active,而且还有大量请求等待connection。
2.2. 解决方法
(1)提高Maximum Capacity数量,该值一般略大于峰值情况下的数据库连接数。
Services > JDBC > Connection Pools > BankConnectionPool > Configuration > Connections
(2)重点检查synchronize代码段和涉及数据库锁的代码。如果有必要,可以查看thread dump,看看线程在忙什么和等什么。
3.数据库连接使用超时
此类问题一般是由于某些数据库操作时间比较长,超过了Inactive connection timeout的设置。
3.1. 诊断方法
在Server Log中,明确有下列提示,并且在提示后抛出应用异常:
Forcibly releasing inactive resource "weblogic.jdbc.common.internal.ConnectionEnv@132967d" back into the pool "BankConnectionPool".
这里无法列出应用异常,因为每个应用都不一样,不过很有可能会抛出空指针异常,因为Connection被强制放回池中了,继续使用一个空对象会抛出该异常。
3.2. 解决方法
在高级参数中,提高Inactive connection timeout数量。
Services > JDBC > Connection Pools > BankConnectionPool > Configuration > Connections
4.事务超时
此类问题一般是由于某些数据库操作时间比较长,超过了JTA Timeout Seconds的设置。
4.1. 诊断方法
在Server Log中,明确抛出异常:
weblogic.transaction.internal.TimedOutException: Transaction timed out after 300 seconds
4.2. 解决方法
提高Services > JTA Configuration > Timeout Seconds数量。
注意,这个参数应该小于Inactive connection timeout的值,因为事务必须在连接超时前完成。
如果想分析究竟是哪些SQL语句导致事务超时,可以打开日志AdminServer > Logging > JDBC,选中Enable JDBC Logging,并设置JDBC Log File Name。
WebLogic Server中,数据库连接池是一个经常出问题的地方。下面就总结一下出问题的原因和解决办法。
1.数据库连接泄漏
此类问题一般都是由于开发人员没有正确关闭数据库连接造成的。比如,使用完Connection后,没有调用Connection.close()方法。
1.1. 诊断方法
在Console中,找到Connection Pools Tab 和Diagnostics,设置以下属性(不同版本可能略有区别)
Enable Connection Leak Profiling 启用连接池泄漏的监控。
Enable Connection Profiling 启用连接池监控。
Inactive Connection Timeout 100 表示100秒后强制回收无效连接。默认0,表示使用完才释放回连接池。
无需重启,查看server的log,查找“A JDBC pool connection leak was detected”,如果有,看看是哪个类引起的。
下面是一个数据库连接泄漏的例子:
A JDBC pool connection leak was detected.
A connection leak occurs when a connection obtained from the pool was not closed explicitly by calling close() and then was disposed by the garbage collector and returned to the connection pool.
The following stack trace at create shows where the leaked connection was created.
Stack trace at connection create:
at weblogic.jdbc.wrapper.JTAConnection.init(JTAConnection.java:90)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:468)
at weblogic.jdbc.jta.DataSource.connect(DataSource.java:410)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:344)
at troubleshooting.servlets.JdbcConnections.service(JdbcConnections.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7047)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3902)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
问题解决后,把三个属性设置回先前的值。
1.2. 解决方法
正确的关闭数据库连接。具体代码如下:
Connection conn = null;
ResultSet rs = null;
preparedStatement pss = null;
try {
conn = dataSource.getConnection(USERID,pASSWORD);
pss = conn.prepareStatement("SELECT SAVESERIALZEDDATA FROM SESSION.pINGSESSION3DATA WHERE SESSIONKEY = ?");
pss.setString(1,sessionKey);
rs = pss.executeQuery();
pss.close();
} catch (Throwable t) {
// 错误处理
} finally {
try {
if (conn != null) conn.close();
} catch (Exception e){}
}
2.数据库连接不够用
导致数据库连接不够用的原因主要有:
(1)某些程序占用connection时间过长,如果多个用户同时使用这些程序,则会导致连接不够用。
(2)线程死锁,无法释放connection。
2.1. 诊断方法
(1)监控参数:Waiting For Connection High Count
[domain_name]-> Enviroment -> Servers -> [Server] -> Monitoring -> JDBC查看参数:Waiting For Connection High Count
如果没有此参数,手工添加进来,该参数表示在没有可用连接的情况下,应用程序等待连接的最大个数。
调整后的连接池最大值 = 调整前的连接池最大值 + Waiting For Connection High Count。
一般来说,数据库连接池的大小与最佳并发用户数相当。
(2)在Server Log中,明确抛出下列异常:
java.sql.SQLException: Internal error: Cannot obtain XAConnection weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool BankConnectionPool to allocate to applications, please increase the size of the pool and retry..
at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1493)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:455)
at weblogic.jdbc.jta.DataSource.connect(DataSource.java:410)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:344)
at troubleshooting.servlets.JdbcConnections.service(JdbcConnections.java:80)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7047)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3902)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
如果此时观察connection的监控,会发现所有connection 都是Active,而且还有大量请求等待connection。
2.2. 解决方法
(1)提高Maximum Capacity数量,该值一般略大于峰值情况下的数据库连接数。
Services > JDBC > Connection Pools > BankConnectionPool > Configuration > Connections
(2)重点检查synchronize代码段和涉及数据库锁的代码。如果有必要,可以查看thread dump,看看线程在忙什么和等什么。
3.数据库连接使用超时
此类问题一般是由于某些数据库操作时间比较长,超过了Inactive connection timeout的设置。
3.1. 诊断方法
在Server Log中,明确有下列提示,并且在提示后抛出应用异常:
Forcibly releasing inactive resource "weblogic.jdbc.common.internal.ConnectionEnv@132967d" back into the pool "BankConnectionPool".
这里无法列出应用异常,因为每个应用都不一样,不过很有可能会抛出空指针异常,因为Connection被强制放回池中了,继续使用一个空对象会抛出该异常。
3.2. 解决方法
在高级参数中,提高Inactive connection timeout数量。
Services > JDBC > Connection Pools > BankConnectionPool > Configuration > Connections
4.事务超时
此类问题一般是由于某些数据库操作时间比较长,超过了JTA Timeout Seconds的设置。
4.1. 诊断方法
在Server Log中,明确抛出异常:
weblogic.transaction.internal.TimedOutException: Transaction timed out after 300 seconds
4.2. 解决方法
提高Services > JTA Configuration > Timeout Seconds数量。
注意,这个参数应该小于Inactive connection timeout的值,因为事务必须在连接超时前完成。
如果想分析究竟是哪些SQL语句导致事务超时,可以打开日志AdminServer > Logging > JDBC,选中Enable JDBC Logging,并设置JDBC Log File Name。
发表评论
-
WLS_046:常见故障之十四:Proxy Plug-in 问题
2013-02-25 14:00 814声明:该博文转自http://maping930883.blo ... -
WLS_042:常见故障之十:JMS Queue中的消息被“重复消费”问题
2013-02-25 13:58 1418声明:该博文转自http://maping930883.blo ... -
WLS_038:常见故障之六:Too many open files
2013-02-25 13:53 1145声明:该博文转自http://maping930883.blo ... -
常见故障之五:Out of Memory
2013-02-22 16:19 790声明:该博文转自http://maping930883.blo ... -
WLS_036:常见故障之四:Stack Overflow Error
2013-02-22 16:16 1116声明:该博文转自http://maping930883.blo ... -
WLS_035:常见故障之三:Server Hang
2013-02-22 16:14 870声明:该博文转自http:// ... -
WLS_034:常见故障之二:Server Crash后找不到Core Dump文件
2013-02-22 16:11 1067声明:该博文转自http://maping930883.blo ... -
WLS_033:常见故障之一:Server Crash
2013-02-22 16:10 930声明:该博文转自http:// ... -
WebLogic Server高级管理之五:集群下的Data Source配置
2012-07-31 21:59 1195声明:该博文转自http:// ... -
WebLogic Server高级管理之四:为集群配置Apache代理
2012-07-31 21:55 1005. 声明:该博文转自http://maping930883.b ... -
WebLogic Server高级管理之三:集群下的HTTP Session管理
2012-07-31 21:52 1565声明:该博文转自http:// ... -
WebLogic Server高级管理之二:为集群配置ProxyServer
2012-07-31 21:47 1535声明:该博文转自http://maping930883.blo ... -
WebLogic Server高级管理之二:为集群配置ProxyServer
2012-07-22 21:04 0声明:该博文转自热爱生活,热爱JAVA。原文地址为http:/ ... -
WebLogic Server高级管理之一:配置集群
2012-07-22 21:01 1089首先声明:该博文转自 ... -
WebLogic Server高级管理之六:集群下的JMS配置
2012-07-22 20:57 1259首先声明,该博文转自热爱生活,热爱JAVA,原文地址为http ... -
WebLogic Server高级管理之八:JMS 存储与转发
2012-07-22 20:37 1133提醒:weblogic系列博客均转载自千红一酷的博客,原地址为 ... -
WebLogic Server高级管理之七:JMS Topic 持久化订阅
2012-07-22 20:04 1077运行环境:WebLogic Server 12.1.1 开发版 ...
相关推荐
请访问下面的repo以获取具有ansible2且没有角色的更新版本。 这比当前的简单。 全局变量:文件名:<playbook> / group_vars / all 指定应用程序名称,即CS,GOLD,GEMS Ex- app_name:CS 指定JVMS以启动/停止。...
此包是本人在修补weblogic漏洞时,http://sn.cloud.ccb.com/bea_wls_internal/classes/META-INF/MANIFEST.MF漏洞实在没办法,试遍网上所有方法,在被逼无奈之下,花了两周研究出来的,就不要想在其他地方找到了,...
fmw_12.2.1.4.0_wls_Disk1_1of1.zip,百度网盘下载地址在TXT文件内
Oracle WebLogic Server(简称WLS)是Oracle公司推出的高端企业级应用服务器,是Java EE应用程序的重要运行平台。本篇文章将详细探讨WLS 12.2.1.4.0的Lite版本,即轻量级版,该版本在保持核心功能的同时,提供了更...
fmw_14.1.1.0.0_wls_lite_generic.jar 百度网盘下载地址在TXT文件内
该压缩包"fmw_12.2.1.4.0_wls_quick_Disk1_1of1.zip"中的"fmw_12214_readme.html"文件,通常包含了详细的安装指南和注意事项,包括系统需求、安装步骤、常见问题解答等内容,是安装过程中的重要参考文档。...
mac版本weblogic安装包
在本资料包"WLS_MM.zip"中,包含了一个名为"WLS_MM"的文件,这可能是一个MATLAB程序,用于实现加权最小二乘法(Weighted Least Squares, WLS)的计算。 加权最小二乘法是普通最小二乘法(Ordinary Least Squares, ...
它提供了丰富的功能,包括事务处理、集群、安全性、JMS消息队列、JDBC数据源以及对Java EE标准的支持。本安装包`fmw_12.2.1.2.0_wls_Disk1_1of1.zip`包含了WebLogic Server的基础组件和相关工具。 首先,让我们深入...
WebLogic是美商Oracle的主要产品之一,是并购BEA得来。是商业市场上主要的Java(J2EE)应用服务器软件(application server)之一,是世界上第一个成功商业化的J2EE应用服务器, 已推出到12c(12.2.1.4) 版。而此产品...
在室内无线定位系统中,常见的信号源可以是Wi-Fi接入点、蓝牙设备或是专门的射频标签。接收端根据接收到多个信号源的信号强度或到达时间差(Time Difference of Arrival, TDOA)来估算自身位置。WLS算法通过构建一个...
Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation,wls filter,WLS filter code
【标题】"wls1036_generic.jar" 是Oracle WebLogic Server 10.3.6的一个核心组件,这个JAR文件包含了WebLogic Server的基础功能和管理工具。WebLogic Server是一个广泛应用的Java EE应用服务器,它为企业级应用程序...
fmw_12.1.3.0.0_wls.jar fmw_12.2.1.2.0_wls.jar fmw_12.2.1.3.0_wls.jar fmw_12.2.1.4.0_wls_lite_generic.jar fmw_14.1.1.0.0_wls.jar wls_121200.jar wls1036_generic.jar wls1032_linux32.bin
### Weblogic 10.3.6 (wls1036_generic.jar) 安装包概述 #### 一、Weblogic 10.3.6版本简介 Oracle WebLogic Server 是一款应用服务器,适用于开发、部署并管理企业级应用程序。它支持多种协议和服务,并且与Java ...
**基于WLS滤波的HDR显示 - HDR_WLS_最小二乘滤波** 高动态范围(HDR)图像技术是现代数字图像处理中的一个重要领域,它能够捕捉并显示比普通低动态范围(LDR)图像更广泛的亮度范围。HDR图像通常包含比人眼所能感知的更...
Weblogic Server 11gR1,版本号是...在命令行,进入安装文件wls1036_generic.jar所在文件夹 然后输入命令: Java -jar wls1036_generic.jar ,点击回车后程序会启动weblogic安装文件的图形安装界面,若有问题请留言
Oracle提供了一系列工具,如WLST(WebLogic Scripting Tool)和EM(Enterprise Manager),帮助管理员监控服务器状态,收集性能数据,并进行故障排查。通过这些工具,你可以跟踪补丁应用后的性能变化,及时发现并...
然而,文档指出双边滤波在提取任意尺度的细节上存在局限性,因此引入了基于加权最小二乘(Weighted Least Squares, WLS)优化框架的新边缘保持平滑算子。 4. **加权最小二乘(Weighted Least Squares, WLS)**:这...