服务器上的套接字错误

时间:2016-09-06 13:57:28

标签: java sockets networking jdbc

有一个java程序试图将大约150k条记录插入sql server数据库,并在生产服务器上出现以下错误而失败。

  

[Microsoft] [用于JDBC的SQLServer 2000驱动程序]建立套接字

时出错

在数据量增加(即插入数量)之后开始看到这些错误。 SQL Server连接正常。

我尝试通过将Max connection pool设置为

来更改JDBC字符串
String DB_URL= "jdbc:sqlserver://example.com:11111;SelectMethod=Direct;DatabaseName=DB1;Max Pool Size=100000"

在本地计算机上,程序运行正常。这说明程序没有错。

只有当尝试在prod服务器上运行相同的程序时才会出现问题。即使在服务器上,只有在数据量增加后才会看到此错误。在此之前,甚至在服务器上程序运行正常。

套接字错误主要是网络问题吗?需要帮助。

这是stacktrace

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.setupImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.<init>(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.<init>(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.prepareStatement(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.prepareStatement(Unknown Source)

1 个答案:

答案 0 :(得分:1)

如果您的数据库服务器连接不足(数据库服务器中的并发连接存在限制,请参阅服务器文档)会导致连接泄漏,则可能会发生此类错误。你没有提出你的代码,所以很难说,但是,检查以下内容是值得的:

1)您是否有机会每个连接仅插入一条记录并获得新连接以插入下一条记录? 2)插入记录后是否关闭了连接?

如果可能的话,使用PreparedStatement和addBatch批量插入并查看它会有所不同。