tomcat 数据库连接池 查询过于频繁时导致 数据库连接失败!
环境:eclipse+tomcat问题:数据库连接使用的是数据库连接池,部分配置参数:maxActive="100"maxIdle="30"maxWait="-1"有一个...
环境:eclipse + tomcat
问题:数据库连接使用的是数据库连接池,部分配置参数:
maxActive="100" maxIdle="30" maxWait="-1"
有一个查询操作复杂一点,需要关联5张表,使用了out join,inner join等等,当点击查询按钮的频率比较大时(如:100次/秒,200次/秒),就会连不上数据库.
这样的问题应该很常见的,那位朋友可以解决,帮帮忙~~ 多谢了 展开
问题:数据库连接使用的是数据库连接池,部分配置参数:
maxActive="100" maxIdle="30" maxWait="-1"
有一个查询操作复杂一点,需要关联5张表,使用了out join,inner join等等,当点击查询按钮的频率比较大时(如:100次/秒,200次/秒),就会连不上数据库.
这样的问题应该很常见的,那位朋友可以解决,帮帮忙~~ 多谢了 展开
展开全部
在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;
}
}
<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)接 )
数据库最大连接数为100, 当点击数大时,就超过了maxActive 数了.
将maxActive 设大如300(逐渐设大), 并将 maxIdle 设小(如5 或10)接 )
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询