tomcat 数据库连接池 查询过于频繁时导致 数据库连接失败!

环境:eclipse+tomcat问题:数据库连接使用的是数据库连接池,部分配置参数:maxActive="100"maxIdle="30"maxWait="-1"有一个... 环境:eclipse + tomcat
问题:数据库连接使用的是数据库连接池,部分配置参数:
maxActive="100" maxIdle="30" maxWait="-1"
有一个查询操作复杂一点,需要关联5张表,使用了out join,inner join等等,当点击查询按钮的频率比较大时(如:100次/秒,200次/秒),就会连不上数据库.
这样的问题应该很常见的,那位朋友可以解决,帮帮忙~~ 多谢了
展开
 我来答
小山山001
2011-01-19 · TA获得超过1159个赞
知道小有建树答主
回答量:1246
采纳率:0%
帮助的人:1263万
展开全部
数据库连接池的连接被用光了,自然就不能连接了
可以加大最大连接数,还就没了连接用完了要及时关闭,以免占着坑不拉屎,
想那些sql语句复杂的最好简化以减少查询的时间,寻找别的解决方法
gln67254
推荐于2018-04-05 · TA获得超过581个赞
知道小有建树答主
回答量:723
采纳率:0%
帮助的人:562万
展开全部
在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;
}

}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhengven
2011-01-19 · TA获得超过1295个赞
知道小有建树答主
回答量:997
采纳率:0%
帮助的人:377万
展开全部
当数据量比较大时,Join的效率比较慢. 可以考虑用视图.
数据库最大连接数为100, 当点击数大时,就超过了maxActive 数了.
将maxActive 设大如300(逐渐设大), 并将 maxIdle 设小(如5 或10)接 )
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式