我有一个java程序,在工作好几个小时后给我一个错误...这些程序曾经在我们早期的服务器上工作正常,现在我们已经升级到具有更高配置的Windows Server 2008和新安装的SQL Server。是否有任何数据库设置,我缺少或有任何我错过的操作系统设置?
我收到的EXCEPTION是:
错误::
org.apache.commons.dbcp.SQLNestedException:无法创建PoolableConnectionFactory,原因:网络错误
IOException:没有可用的缓冲区空间(达到最大连接数?):connect
答案 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