此错误与操作系统或数据库有关吗?

时间:2010-10-11 05:33:24

标签: java sql-server jdbc windows-server-2008 apache-commons-dbcp

我有一个java程序,在工作好几个小时后给我一个错误...这些程序曾经在我们早期的服务器上工作正常,现在我们已经升级到具有更高配置的Windows Server 2008和新安装的SQL Server。是否有任何数据库设置,我缺少或有任何我错过的操作系统设置?

我收到的EXCEPTION是:

  

错误::

     

org.apache.commons.dbcp.SQLNestedException:无法创建PoolableConnectionFactory,原因:网络错误

     

IOException:没有可用的缓冲区空间(达到最大连接数?):connect

3 个答案:

答案 0 :(得分:1)

我在Windows上遇到过类似的问题,不得不进行注册表更改。这与插座被高速打开和关闭的事实有关,比操作系统的清理速度快。

我不记得特定的注册表设置,但它增加了用户应用程序可用的数字或套接字连接。

如果我没记错的话,操作系统默认为5000个连接。

答案 1 :(得分:0)

使用不同的数据库连接池包,例如c3p0。另外,检查它与你的JDBC驱动程序的兼容性。

答案 2 :(得分:0)

  

我有一个java程序,在工作几个小时后给我一个错误...

IOException: No buffer space available (maximum connections reached?)

JDBC代码可能无法正确关闭已获取连接的finally的{​​{1}}块中的连接。这样连接将保持打开,直到DB强行超时并关闭它们。超时取决于使用的DB配置。显然,前一台机器的超时时间相对较短,新机器的超时时间相对较长。当数据库用完可用连接时,因为你的应用程序永远不会关闭它们,那么你将得到类似的例外。

以下代码示例说明了资源处理的常规(基本)JDBC习惯用法(请注意代码流和代码注释):

try