我一直在使用Tomcat和mySQL很长一段时间,但最近一直在设法最大化我的连接。我不知道为什么我的代码打开并在完成后关闭连接。例如,这是我的连接和关闭方法:
public void closeConnection(){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void connect(){
try {
initCtx = new InitialContext();
} catch (NamingException e) {
e.printStackTrace();
}
try {
envCtx = (Context) initCtx.lookup("java:comp/env");
} catch (NamingException e) {
e.printStackTrace();
}
try {
ds = (DataSource) envCtx.lookup("jdbc/TestDB");
} catch (NamingException e) {
e.printStackTrace();
}
}
这是执行通用语句的基本方法:
public void excuteStatement(String query){
connect();
try {
con = ds.getConnection();
con.createStatement().executeUpdate(query);
} catch (Exception ex ){
} finally {
if (con != null)
closeConnection();
}
}
这种代码是否应该导致连接保持打开?我得到了我需要的所有数据,99%的时间都可以正常工作。
这是我在Tomcat context.xml中的配置:
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="myUserName" password="myPass" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://xxx.xxx.xxx.xxx:0000/myUserName"/>
现在就在这个时候,我被锁定了,因为我有最大的连接。我应该降低等待时间以避免这种情况吗?
我应该对我的代码说一些事情,通常它会在大循环中触发许多多个语句。我想也许这种快速的开放和关闭可能是个问题。因为我的Tomcat servlet总是在运行它应该只打开一次连接并打开它并检查以确保它仍处于活动状态而不是始终打开连接并关闭它?
感谢您对此提出的任何建议。
答案 0 :(得分:0)
是减少你的等待时间,这太高了。在mysql中,您可以增加最大连接的值,将其增加到您的盒子可以处理的合理大小..