Мне очень нравится поднимать вопрос, который широко задают в Интернете, но я не могу его решить.MySql слишком много связей
Я начал проект некоторое время назад, и после месяца тестирования я ударил ошибку «Слишком много соединений». Я просмотрел его и «решил», увеличив max_connections. Тогда это сработало.
С тех пор все больше и больше людей начали использовать его, и он снова ударил. Когда я являюсь единственным пользователем на сайте, я набираю «show processlist», и в нем появляется около 50 подключений, которые все еще открыты (говорят «Сон» в команде). Теперь я не знаю достаточно, чтобы предположить, почему они открыты, но в моем коде я проверил трижды и каждое открытое соединение закрываю.
ie.
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;
}
Каждый раз, когда я делаю что-то еще на сайте, открыта и не закрыта другая нагрузка соединений. Что-то не так с моим кодом? и если нет, то в чем проблема?
Что это такое.getSession(). Connection() делать? –
И это единственное место в вашем приложении, что вы открываете соединения? –
Вы регистрируете все исключения где-то? –