tomcat 数据库连接池 查询过于频繁时导致 数据库连接失败!
作者&投稿:盍府 (若有异议请与网页底部的电邮联系)
给你一段代码,看看对你有没有帮助:
这是我的tomcatde DHCP的配置
<Resource driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" logAbandoned="true" maxActive="20" maxIdle="2" maxWait="5000" name="system" password="sa" removeAbandoned="true" removeAbandonedTimeout="60" type="javax.sql.DataSource"
url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=base" username="sa"/>
当中的
logAbandoned="true" removeAbandoned="true" removeAbandonedTimeout="60"就是用来配置数据库断开后自动连接的。
如果有对数据库的频繁操作,数据库连接是否不要频繁
具体需要看应用场景中使用的数据库操作是否频繁,如果读写查询操作比较频繁的话,建议使用长连接,不用频繁关闭数据库链接;但是最后操作完成后,还是需要关闭数据..
可以加大最大连接数,还就没了连接用完了要及时关闭,以免占着坑不拉屎,
想那些sql语句复杂的最好简化以减少查询的时间,寻找别的解决方法
在tomcat\conf\context.xml写上
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/>
然后项目web.xml
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
把数据库jar包放在tomcat\lib下
写数据库实现类
public Connection getConn()
{
try
{
Context ic = new InitialContext();
DataSource source = (DataSource)ic.lookup("java:comp/env/jdbc/restrant");
Connection conn = source.getConnection();
return conn;
}
catch(NamingException nex)
{
nex.printStackTrace();
return null;
}
catch(Exception ex)
{
ex.printStackTrace();
return null;
}
}
当数据量比较大时,Join的效率比较慢. 可以考虑用视图.
数据库最大连接数为100, 当点击数大时,就超过了maxActive 数了.
将maxActive 设大如300(逐渐设大), 并将 maxIdle 设小(如5 或10)接 )
城黛清眩: 看异常是驱动没有加载到,你是不是把mysql驱动包放到了 /WEB-INF/lib 中了,这对于tomcat的common类加载器来说是加载不到的,你可以试试把驱动包放到tomcat的lib目录下.
交城县17657952656: Tomcat数据库连接池,错误:Cannot load JDBC driver class 'com.mysql.jdbc.Driver' - ?
城黛清眩: 应该把MySQL的jar包放在Tomcat安装目录下的lib文件夹下吧 查看原帖>>
交城县17657952656: 什么是mysql连接池,它的主要功能是什么 - ?
城黛清眩: 数据连接池是把数据库连接放到中间服务器上,比如tomcat上,那么相当于每次你操作数据库的时候就不需要再"连接"到数据库再进行相关操作,而是直接操作服务器上的"连接池",你可以根据字面意思进行理解,把数据库当做一条小溪,...
交城县17657952656: Tomcat连接池得到当前连接数?
城黛清眩: 在网上找到的资料,试下看行不! 关于如何配置Tomcat数据库连接池,网上已有太多文章了.可是找不到一篇文章能 告诉我,怎么能得到Tomcat连接池的当前连接数.如果想要监视Tomcat的运行状况,这 是一个重要参数.所以我花了半天的...
交城县17657952656: 数据库连接池报错,找不到数据源,求助 - ?
城黛清眩: 数据库连接池报错,找不到数据源,求助 出现这个问题是因为你的数据库连接池已经用完, 没有更多的供程序使用才造成的.
交城县17657952656: 给Tomcat配置数据库连接池的时候,有的人说在在Tomcat目录下conf目录的context.xml设置,有的说server.xm - ?
城黛清眩: 都是对的,两个都可以实现,两种不同的配置方法而已.不过要注意下, context.xml文件就有两种配置方式,如果是全局的,就配在tomcat的conf目录下,如果只是单个项目用的,可以配在该项目的META-INF目录下.
交城县17657952656: Tomcat7 新jdbc连接池,使用过程中得到连接后,直接执行close方法,但是连接池对关闭的连接未释放 - ?
城黛清眩: 这个情况和WEB的session和关,是连接池就会重用.
交城县17657952656: Tomcat中创建连接池怎么用 - ?
城黛清眩: 1.将数据库驱动程序的JAR文件放在Tomcat的 common/lib 中; 2.在server.xml中设置数据源,以MySQL数据库为例,如下: 在 节点中加入, name="jdbc/DBPool" type="javax.sql.DataSource" password="root" driverClassName="com....
交城县17657952656: 如何配置Tomcat数据库连接池 - ?
城黛清眩: 查看Tomcat访问日志及错误日志,容易发现经绝大部分属于内存溢出、Tomcat进程数满等性能问题.加大tomcat内存配置能够很好的解决溢出问题. 命令行启动方式的内存配置 修改bin目录下catalina.bat文件的第97行以下:rem --------------------...
交城县17657952656: tomcat启动报错 Cannot create PoolableConnection - ?
城黛清眩: 从目前的错误来看你的数据库连接池都无法创建,意思就是压根就连不上,所以你要从数据库开始排查,首先检查数据库,用其他数据库连接工具测试数据库,确保数据库没问题;再次,jar包驱动,确保你用的这个jar跟你的数据库是兼容的,比如换到其他tomcat启动报错 Cannot create PoolableConnection