目录
1. 概述 3
1.1 概述: 3
1.2 系统信息: 3
2. 连接池问题 5
2. 1 问题描述 5
2.2 错误日志分析 5
2.3连接池问题总结 14
3. 其他问题 14
3. 1 部署 14
3. 1 部署类型 15
1. 概述
1.1 概述:
应客户的要求,某局BATCH系统存在的问题进行诊断。经过日志分析及故障现象定位造成问题的原因,形成此份报告。
为了提供系统的稳定和性能,建议针对性的修改一些参数(会在报告中详述),在下次重启Server时付诸实施。如果需要疑惑的问题,
1.2 系统信息:
1) 版本信息
WebLogic Version:WebLogic Server Temporary Patch for CR370091 Tue Jul 08 17:31:21 EDT 2008 WebLogic Server Temporary Patch for CR370915 Tue Jul 15 14:36:25 IST 2008 WebLogic Server 10.0 MP1 Thu Oct 18 20:17:44 EDT 2007 1005184
Java Version:IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 AIX ppc64-64 j9vmap6423-20071007 (JIT enabled)
2) 架构信息
各节点属于单独被管节点,未在同一集群中
3) 连接池配置
4) 故障连接池SCDS配置
2. 连接池问题
2. 1 问题描述
如上图所示SCDS连接池,在Weblogic服务启动后,BATCH4节点连接池不能按预期配置的初始建立80个连接。服务运行一段时候间后Current Capacity容量保持在40左右,运行一段时间后部分业务不可用,必须重启服务。查看中间件后台日志信息,发现日志中存在大量与连接池错误有关日志。
2.2 错误日志分析
1)网络闪断问题
####<2014-8-23 上午01时41分37秒 GMT+08:00> <> <> <> <1408729297399>
####<2014-9-3 上午02时52分43秒 GMT+08:00> <> <> <> <1409683963815>
####<2014-9-5 上午12时55分00秒 GMT+08:00> <> <> <> <1409849700178>
####<2014-9-13 上午01时33分30秒 GMT+08:00> <> <> <> <1410543210281>
以上日志说明BATH4节点所使用的SCWWDS4连接池与数据库之间网络物理连接有闪断问题,可能存在网络不稳定状况,建议网络工程师在近期检查网络状况。
2)物理连接关闭
Weblogic Server日志:
####<2014-9-5 上午02时10分12秒 GMT+08:00> <> <> <> <1409854212313>
在Weblogic Server日志中可以观察到大量的Connection for pool "SCDS" closed信息,表示系统在某一时刻会批量关闭一批连接,一般断掉物理连接会这么做(WebLogic 配置池收缩也会这么做,如果未配置的话默认为900s检查一次,从您的配置文件发现未配置池收缩)。从线程名称看,是应用程序的线程关闭了连接。且在应用日志发现有大量如下日志信息:
972102: 0E9F01ITRG2C594F: 220809998 INFO cn.gwssi.common.dao.ds.source.DBController(close:321) - [gwssi] 线程[972102]关闭数据库连接;连接时间:2014/09/15 08:30:20 143;关闭时间:2014/09/15 08:30:20 147
建议让开发人员检查程序,为什么要关闭物理连接。一般我们不建议应用程序直接管理连接池的连接,这些都是Weblogic自身管理的,不然容易造成混乱。应用程序只在需要时从连接池中获取连接,使用完成后调用connection.close()方法把连接还给池即可。(这里的close不是关闭连接物理连接,而是把连接还给连接池,以便应用程序再使用)
3)连接池参数不合理
Weblogic Server日志:
#####<2014-9-15 上午09时10分58秒 GMT+08:00> <> <> <> <1410743458081>
在Weblogic Server日志中可以观察到大量的上述信息,表示系统业务高峰期时大量创建连接,另与现场工程师沟通发现出现过Reached maximum capacity of pool信息。可以看出当前连接池参数设置稍有不合理之处,建议将连接池最大值调整为120,步增长调整为5。
4)连接泄露
Weblogic Server日志:
####<2014-9-12 上午11时39分41秒 GMT+08:00>
tuning)'> <> <> <> <1410493181108>
"weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection@3c296c5" back into the connection pool "SCDS", currently reserved by: java.lang.Exception
at weblogic.jdbc.common.internal.ConnectionEnv.setup(ConnectionEnv.java:291)
at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:314)
at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:292)
at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:425)
at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:316)
at weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:93)
at weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:106)
at weblogic.jdbc.pool.Driver.connect(Driver.java:149)
at weblogic.jdbc.jts.Driver.getNonTxConnection(Driver.java:642)
at weblogic.jdbc.jts.Driver.connect(Driver.java:124)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:339)
at cn.gwssi.plugin.dao.datasource.db.ConnectSourceImpl.getConnection(ConnectSourceImpl.java:166)
at cn.gwssi.common.dao.ds.UserConnectionPool.getConnection(UserConnectionPool.java:68)
at cn.gwssi.common.dao.ds.ConnectFactory.getConnection(ConnectFactory.java:73)
at cn.gwssi.plugin.dao.datasource.table.TableImpl.getConnection(TableImpl.java:105)
at cn.gwssi.common.dao.func.RegisterSqlRowset.executeSql(RegisterSqlRowset.java:58)
at cn.gwssi.common.dao.iface.DaoFunction.execute(DaoFunction.java:293)
at cn.gwssi.common.dao.BaseTable.invokeRegisterMethod(BaseTable.java:567)
at cn.gwssi.common.dao.BaseTable.executeFunction(BaseTable.java:502)
at cn.gwssi.app.codemap.cache.method.MethodCodeDefine.loadCodeData(MethodCodeDefine.java:234)
at cn.gwssi.app.codemap.cache.method.MethodCodeDefine.getCodeSet(MethodCodeDefine.java:204)
at cn.gwssi.app.codemap.txn.TxnCodeList.txnFFFF02(TxnCodeList.java:58)
at cn.gwssi.common.tx