我在 HPC(高性能计算)集群上运行 Java 应用程序。该应用程序通过与 Oracle 11.2.0 数据库建立 JDBC 瘦连接。鉴于这是在集群上,因此会同时建立和维护大量连接(尽管与数据库的实际交互相对较少)。潜在的最大并发连接数将是 4500(尽管它永远不会达到那么高)。
该应用程序工作正常,直到第 125 个并行连接失败并出现以下错误。此错误消息在后续连接尝试中仍然存在:
java.sql.SQLException: No more data to read from socket
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:113)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:147)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:209)
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1129)
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1080)
at oracle.jdbc.driver.T4C8TTIpro.receive(T4C8TTIpro.java:131)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:902)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:269)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:454)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:802)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
我是否认为这与数据库允许的连接数限制有关?或者这与数据库上的负载有关吗?
有没有人知道我可以如何解决这个问题,以便我能够并行建立更多数量的连接?
提前谢谢了。