知识大全 tomcat连接池的三个重要参数
Posted 知
篇首语:此刻打盹,你将做梦;而此刻学习,你将圆梦。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 tomcat连接池的三个重要参数相关的知识,希望对你有一定的参考价值。
引用:
a 如果设为true则tomcat自动检查恢复重新利用 没有正常关闭的Connection (默认是false) <parameter> <name>removeAbandoned</name> <value>true</value> </parameter>b 设定连接在多少秒内被认为是放弃的连接 即可进行恢复利用 <parameter> <name>removeAbandonedTimeout</name> <value> </value> </parameter>c 输出回收的日志 可以详细打印出异常从而发现是在那里发生了泄漏 <parameter> <name>logAbandoned</name> <value>true</value> </parameter>实验环境 tomcat配置连接池 最大连接数为 代码如下 <parameter> <name>maxActive</name> <value> </value> </parameter> <parameter> <name>maxIdle</name> <value> </value> </parameter> <parameter> <name>maxWait</name> <value> </value> </parameter> <parameter> <name>removeAbandoned</name> <value>true</value> </parameter> <parameter> <name>removeAbandonedTimeout</name> <value> </value> </parameter> <parameter> <name>logAbandoned</name> <value>true</value> </parameter>使用如下代码进行实验(每一次不关闭连接) try Connection con = getJdbcDAO() getDataSource() getConnection(); ResultSet rs = con createStatement() executeQuery( select * from K_MS B_MSPBXX ); while (rs next()) System out println(rs getString( )); catch (SQLException e) e printStackTrace(); 当该连续执行 次之后 后台就报连接池满的错
: : [ hibernate util JDBCExceptionReporter] [WARN] SQL Error: SQLState: null : : [ hibernate util JDBCExceptionReporter] [ERROR] Cannot get a connection pool exhausted : : [ hibernate util JDBCExceptionReporter] [WARN] SQL Error: SQLState: null : : [ hibernate util JDBCExceptionReporter] [ERROR] Cannot get a connection pool exhausted
根据如下脚本查数据库连接declare cur_spid cursor forselect spid from sysprocesses where ipaddr= and program_name <> SQL_Advantage godeclare @spid Integeropen cur_spidfetch cur_spid into @spid while @@sqlstatus= begin print % ! @spid dbcc traceon( ) dbcc sqltext(@spid ) fetch cur_spid into @spid endclose cur_spid
得到类似如下的五条记录 即有 个连接没有释放
引用:
DBCC execution pleted If DBCC printed error messages contact a user with System Administrator (SA) role SQL Text: select * from K_MS B_MSPBXX DBCC execution pleted If DBCC printed error messages contact a user with System Administrator (SA) role如果继续执行该代码 后台就报如下错 提示哪里的代码没有关闭连接(已经具体到那一行代码获取的连接没有关闭 这个很重要!!!下面红颜色标注的异常点信息就是具体连接没有释放的代码信息)
DBCP object created : : by the following code was never closed:java lang Exception at mons dbcp AbandonedTrace init(AbandonedTrace java: ) at mons dbcp AbandonedTrace <init>(AbandonedTrace java: ) at mons dbcp DelegatingResultSet <init>(DelegatingResultSet java: ) at mons dbcp DelegatingResultSet wrapResultSet(DelegatingResultSet java: ) at mons dbcp DelegatingStatement executeQuery(DelegatingStatement java: ) at thunisoft fy spxt SpxtBaseLogic createPbxx(SpxtBaseLogic java: )如果时间超过removeAbandonedTimeout设置的时间 再直接使用上面的sql脚本查看数据库连接发现已经都被释放了 并且如果再进行其他数据库操作已经不报连接池满的问题 说明过了 秒之后 tomcat会把那些它认为没有释放的连接进行释放 然后同样的java代码 把tomcat连接池的那三个参数去掉之后 执行 次之后也报连接池满 但是再次执行就不能获取新的连接 并且后台的日志都是连接池满的信息 而没有具体那一行代码的连接没有释放的异常信息 因为大兴实际环境还是出现连接池满的问题(基本上两天报一次) 准备把这三个参数放到实际环境中试试然后看看后台日志 一是想得到具体是哪些地方的代码没有释放 二是如果设置removeAbandonedTimeout参数 可以避免连接没有释放的问题 当然个人认为三期代码的最终部署环境是不需要该参数的 在程序中把连接释放才是解决问题的最根本办法 另外目前还不知道这三个参数会对tomcat性能造成什么影响 应该不大 cha138/Article/program/Java/ky/201311/28004
相关参考
a 如果设为true则tomcat自动检查恢复重新利用没有正常关闭的Connection(默认是false) <parameter> <
一 把数据库JDBC驱动拷贝到 %TOMCAT_HOME%/mon/lib 或 %TOMCAT_HOME%/webapps/yourweb/WEBINF/lib下; 修改tomcat安装
关于tomcat连接池的配置我在自己开始的时候碰到过许多的问题至少失败过六次今天终于成功了对于这个问题的产生与由来我也给大伙说说
知识大全 为Tomcat注册的Windows服务增加安全参数
为Tomcat注册的Windows服务增加安全参数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Tomcat5.0-5.5连接池配置指南 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文以目
Tomcat下配置MySQL数据库连接池 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在$CA
Tomcat的数据库连接池设置与应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!.将数据库驱动程
Tomcat5.5数据库连接池配置 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!猫咪正不断把自己B
知识大全 Java应用 Tomcat中实现https安全连接的方法
Java应用Tomcat中实现https安全连接的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
知识大全 在 tomcat 5 中配置数据库连接池(DBCP)
在tomcat5中配置数据库连接池(DBCP) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 首