OrientDB 连接未在 close API 上关闭

问题描述 投票:0回答:1

我面临 orientdb 的问题并出现以下异常。

Reached maximum number of concurrent connections (max=1000, current=1000), reject incoming connection from /127.0.0.1:54782 [OServerNetworkListener]

为了进行更多分析,我编写了以下用于连接创建和关闭的代码。

public class ConnectionsOpenAndClose {

    public static void main(String[] args) {

        String databaseUrl = <url>;
        String username = <username>;
        String password = <password>;
        OPartitionedDatabasePool pool = openConnections(databaseUrl, username, password);
        ODatabaseDocument oDatabaseDocument = pool.acquire();
        closeConnections(pool, oDatabaseDocument);

    }

    private static void closeConnections(OPartitionedDatabasePool pool, ODatabaseDocument oDatabaseDocument) {
        if (Objects.nonNull(pool)) {
            if (Objects.nonNull(oDatabaseDocument)) {
                oDatabaseDocument.activateOnCurrentThread();
                oDatabaseDocument.close();
            }
            pool.close();
        }
    }

    private static OPartitionedDatabasePool openConnections(String databaseUrl, String username, String password) {
        OPartitionedDatabasePool pool = new OPartitionedDatabasePool(databaseUrl, username, password);
        ODatabaseDocument odbDocument = pool.acquire();
        odbDocument.close();
        return pool;

    }

}

执行代码后,我发现在 pool.close()oDatabaseDocument.close(); 上没有二进制侦听器被关闭。我从 orientdb studio 仪表板验证了这一点。仅当上述代码从 JVM 终止后,这些连接才会被释放。

有什么解决办法吗?如何关闭这些连接?因为一段时间后 orientdb 开始拒绝传入连接,然后最终 orientdb 挂起并需要重新启动。

这种情况发生在执行上述代码的 REDHAT 机器上,并且最新的 Orientdb 位于任何操作系统上。

东方数据库版本3.2.23

database-connection redhat connection-pooling orientdb orientdb3.0
1个回答
0
投票

请不要使用 OParitionedPool。使用 OrientDB 类提供的池,使用方法

com.orientechnologies.orient.core.db.OrientDB#cachedPool(java.lang.String, java.lang.String, java.lang.String, com.orientechnologies.orient.core.db.OrientDBConfig)

不再支持您使用的类。

© www.soinside.com 2019 - 2024. All rights reserved.