2013-10-01 4 views
0

Вот знаменитое сообщение SQLServerException ошибка:SQLServerException, когда нагрузка увеличивается

Error: "Address already in use: connect. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.".

Но это не происходит в первые звонки. Все методы DAO используют уникальный метод для подключения, и все они закрывают соединение, когда они выполняются с базой данных.

Когда число этих вызовов превышает этот метод, этот метод больше не может получить соединение и выкинуть SQLServerException.

В конфигурации сервера нет базы данных. Потому что я пробовал один и тот же сценарий с другой базой данных, и происходит такая же ошибка. Но, когда я сменил сервер (веб-сервер), я не получил ошибку.

Существует десятки решений для этого сообщения, но все они связаны с межсетевым экраном или соединением с базой данных. Моя проблема в том, почему иногда это работает, иногда это не так?

Вот тело метода, который получают соединения:

Connection connection = null; 
try { 
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 

connection = DriverManager.getConnection(DB_CONNECTION_STRING, USERNAME, PASSWORD); 
} catch (ClassNotFoundException e) { 
    DbmgrLogger.logger.error("fail creating the sql connection", e); 
} catch (SQLException e) { 
    DbmgrLogger.logger.error("fail creating the sql connection", e); 
} 
return connection; 

Update: Вот стек:

at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1033) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700) 
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
+1

Эта ошибка означает, что порт, который вы пытаетесь использовать, уже используется чем-то другим (скорее всего, это приложение, которое не закрыло ресурс?). Можете ли вы показать stacktrace, если они есть, или строки, отображающие эту ошибку? Вы начинаете обслуживание каждый раз, когда вы запускаете это? Он может работать, когда освобожден сервис/порт. – porfiriopartida

+0

Стек неполна. – porfiriopartida

+0

увеличить размер пула подключений в SQL-Server. –

ответ

0

Эта ошибка означает, что порт, который вы пытаетесь использовать уже используется кем-то другим (скорее всего, это приложение, которое не закрыло ресурс?)

Adding comment as answer for closing purposes.

+0

Да, одно и то же приложение (но другая часть) не закрыло ресурс. –

Смежные вопросы