当前位置: 技术问答>linux和unix
tomcat连接池管理超难问题,解决者将得到本人全部积分!!!!
来源: 互联网 发布时间:2015-01-14
本文导语: 系统配置: redhat8.0+tomcat4.1.2+j2sdk1.4.1 后台数据库:oracle8i 系统运行情况: tomcat身兼两职:web server & app server 出错现象: 当访问页面的请求数达到一个相对较高的数值时(200以上并发),程序频繁出错,错误信息...
系统配置:
redhat8.0+tomcat4.1.2+j2sdk1.4.1
后台数据库:oracle8i
系统运行情况:
tomcat身兼两职:web server & app server
出错现象:
当访问页面的请求数达到一个相对较高的数值时(200以上并发),程序频繁出错,错误信息如下:“connection closed" ,但再次刷新这个页面,将会显示正常结果。
我servlet源码的数据库连接代码是这样写的:
Context initialContext = new InitialContext();
Context envContext = (Context)initialContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/hoss");
tomcat server.xml 配置文件如下:
(数据库部分)
factory
org.apache.commons.dbcp.BasicDataSourceFactory
removeAbandoned
true
removeAbandonedTimeout
60
logAbandoned
true
driverClassName
oracle.jdbc.driver.OracleDriver
url
jdbc:oracle:thin:@61.108.3.1:1521:orcl
username
user
password
pass
maxActive
200
maxIdle
50
maxWait
100
(具体应用部分)
tomcat文档中要求的DBCP需要的jar包,oracle的驱动包classes12.jar 都已经放到tomcat/common/lib下。
tomcat 的文档中关于数据库连接(jndi)部分的最后提到了connection closed的问题,但我的程序里并没有象tomcat文档中所说的conn.close()两次调用的现象。这点可能性排除。
问题:
1.server.xml中有关dbcp的配置文件如何写?我上面的这种写法正确吗?
2.出现我前面说的现象,到底是server.xml配置的不对还是其他什么方面的问题?
3.tomcat在数据库连接池管理方面是否先天就不行,没有好的解决办法?
问题比较复杂,感谢你耐心的看完,若是能解决,我将奉送全部积分,决不失言。
redhat8.0+tomcat4.1.2+j2sdk1.4.1
后台数据库:oracle8i
系统运行情况:
tomcat身兼两职:web server & app server
出错现象:
当访问页面的请求数达到一个相对较高的数值时(200以上并发),程序频繁出错,错误信息如下:“connection closed" ,但再次刷新这个页面,将会显示正常结果。
我servlet源码的数据库连接代码是这样写的:
Context initialContext = new InitialContext();
Context envContext = (Context)initialContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/hoss");
tomcat server.xml 配置文件如下:
(数据库部分)
factory
org.apache.commons.dbcp.BasicDataSourceFactory
removeAbandoned
true
removeAbandonedTimeout
60
logAbandoned
true
driverClassName
oracle.jdbc.driver.OracleDriver
url
jdbc:oracle:thin:@61.108.3.1:1521:orcl
username
user
password
pass
maxActive
200
maxIdle
50
maxWait
100
(具体应用部分)
tomcat文档中要求的DBCP需要的jar包,oracle的驱动包classes12.jar 都已经放到tomcat/common/lib下。
tomcat 的文档中关于数据库连接(jndi)部分的最后提到了connection closed的问题,但我的程序里并没有象tomcat文档中所说的conn.close()两次调用的现象。这点可能性排除。
问题:
1.server.xml中有关dbcp的配置文件如何写?我上面的这种写法正确吗?
2.出现我前面说的现象,到底是server.xml配置的不对还是其他什么方面的问题?
3.tomcat在数据库连接池管理方面是否先天就不行,没有好的解决办法?
问题比较复杂,感谢你耐心的看完,若是能解决,我将奉送全部积分,决不失言。
|
这样得配置下我以前也做过,并发到300也没什么问题,比较了一下server.xml,感觉你的maxwait太小了(为没有连接时得最大等待时间),一般都要几秒得(1000以上).另外,tomcat一般都用driverclass来代替url的。
另外,你还可以去看你得oracle的process和cursor的设置(影响到并发情况的两个指标)。
再或者,或许你的应用支持不了这么多的并发数,可以考虑写一个比较简单的应用(jsp)来专门并发测试,看到底是应用的问题还是设置的问题。
little help to you
另外,你还可以去看你得oracle的process和cursor的设置(影响到并发情况的两个指标)。
再或者,或许你的应用支持不了这么多的并发数,可以考虑写一个比较简单的应用(jsp)来专门并发测试,看到底是应用的问题还是设置的问题。
little help to you