我们长期部署了一个应用程序。它到目前为止工作得很好。 突然,当应用程序尝试连接数据库时,我们今天收到以下错误。它正在发生和发生。有时候可以连接。最经常低于错误。原因是什么。请建议我。提前谢谢。
错误: -
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host has failed. java.net.BindException: Address already in use: connect
Driver name=com.microsoft.sqlserver.jdbc.SQLServerDriver
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host has failed. java.net.BindException: Address already in use: connect
答案 0 :(得分:2)
你的本地端口用完了。你有一个连接泄漏,或者你没有使用连接池,你应该。检查netstat -anp TCP
。您将在ESTABLISHED状态下看到数以万亿计的连接到同一目标,即MS SQL Server。
答案 1 :(得分:1)
已在使用的地址意味着本地端没有足够的端口可用于创建连接。如果检查网络统计数据,您会看到很多条目。假设它是windows,对于获取列表的确切方式,请检查平台文档。要了解该问题,您还可以阅读:
http://khanna111.com/articles/TCPAAIU.html
请注意,该页面上的前两位数字是混乱的。还有TIME_WAIT阶段的解释。
原因,如果您只有一个应用程序正在运行jdbc,那么可能的原因可能是正在创建与数据库服务器的TCP连接,并且未关闭或创建和关闭连接的速率大于阈值导致这个问题。如果您还没有连接池,则需要在任何情况下调查连接池。如果同一主机上有其他应用程序处理网络流量,那么您还需要查看这些应用程序。