首页 > 解决方案 > h2 在处理 qnap 服务器上的许多文件的 h2 上用完文件描述符

问题描述

这是我看到的错误

仅由一位用户报告,他们使用的是 qnap 服务器,并且有大量文件要处理,所以我想这是关键因素。但是问题可能是由于我在数据库处理(使用休眠和h2)方面做错了什么引起的,还是我更有可能在一般文件处理方面做错了什么?

23/10/2019 14.48.43:EDT:WARNING: com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@f1d393c -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (10). Last acquisition attempt exception: 
org.h2.jdbc.JdbcSQLNonTransientException: IO Exception: "java.io.IOException: No file descriptors available"; "/songkong/Prefs/Database/Database.mv.db" [90031-199]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:502)
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
    at org.h2.message.DbException.get(DbException.java:194)
    at org.h2.message.DbException.convertIOException(DbException.java:392)
    at org.h2.store.fs.FilePathDisk.toRealPath(FilePathDisk.java:220)
    at org.h2.store.fs.FilePathDisk.toRealPath(FilePathDisk.java:35)
    at org.h2.store.fs.FilePathWrapper.toRealPath(FilePathWrapper.java:118)
    at org.h2.store.fs.FileUtils.toRealPath(FileUtils.java:78)
    at org.h2.engine.ConnectionInfo.getName(ConnectionInfo.java:405)
    at org.h2.engine.Engine.openSession(Engine.java:53)
    at org.h2.engine.Engine.openSession(Engine.java:201)
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:178)
    at org.h2.engine.Engine.createSession(Engine.java:161)
    at org.h2.engine.Engine.createSession(Engine.java:31)
    at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:336)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:169)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:148)
    at org.h2.Driver.connect(Driver.java:69)
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:184)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:648)
Caused by: java.io.IOException: No file descriptors available
    at java.io.UnixFileSystem.canonicalize0(Native Method)
    at java.io.UnixFileSystem.canonicalize(UnixFileSystem.java:172)
    at java.io.File.getCanonicalPath(File.java:618)
    at org.h2.store.fs.FilePathDisk.toRealPath(FilePathDisk.java:217)
    ... 22 more

标签: javah2nioqnap

解决方案


推荐阅读