【发布时间】:2011-03-05 09:43:56
【问题描述】:
我讨厌提出一个在网络上被广泛询问的问题,但我似乎无法解决。
我不久前开始了一个项目,经过一个月的测试,我遇到了“连接太多”错误。我调查了它,并通过增加 max_connections 来“解决”它。然后就奏效了。
从那以后,越来越多的人开始使用它,并且它再次流行起来。当我是站点上的唯一用户时,我键入“show processlist”,它会提供大约 50 个仍然打开的连接(在命令中说“Sleep”)。现在,我不知道为什么要推测这些是打开的,但是在我的代码中,我检查了三次,并且我打开的每个连接都关闭了。
即。
public int getSiteIdFromName(String name, String company)throws DataAccessException,java.sql.SQLException{
Connection conn = this.getSession().connection();
Statement smt = conn.createStatement();
ResultSet rs=null;
String query="SELECT id FROM site WHERE name='"+name+"' and company_id='"+company+"'";
rs=smt.executeQuery(query);
rs.next();
int id=rs.getInt("id");
rs.close();
smt.close();
conn.close();
return id;
}
每次我在网站上做其他事情时,都会打开而不是关闭另一批连接。 我的代码有问题吗?如果不是,可能是什么问题?
【问题讨论】:
-
this.getSession().connection() 在做什么?
-
这是您应用中唯一打开连接的地方吗?
-
您是否在某处记录所有异常?