我不想提出一个在网络上被广泛询问的问题,但我似乎无法解决它。
一段时间以前,我开始了一个项目,在经过一个月的测试后,我遇到了“太多连接”的错误。我研究了一下,通过增加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;
}
每当我在网站上做其他事情时,就会打开另一批连接并未关闭。我的代码有问题吗?如果没有,可能是什么问题?