[java.lang.UnsatisfiedLinkError由“打开的文件太多”错误引起]] << [

问题描述 投票:0回答:1
我正在尝试诊断大型的第三方应用程序(Midonet)中的问题,当JNA尝试加载“ c”库时,该问题正在发生。日志条目(带有stacktrace)在下面。

当我尝试在具有Linux 5.3内核的新计算机上启动Midonet时,问题就会显现出来。它正在较旧的内核(4.15)上运行。打开文件的限制是4096,所以我假设是(某种程度上)打开文件的库是正在加载的库。

现在Midonet使用的是JNA(4.2.2)的较旧版本,因此我跳到了4.x版本的最后一个版本,以查看是否有帮助。我可以尝试的下一件事是在平台本身上重建JNA 4.x。

我在JNA或Midonet问题跟踪器中都找不到任何相关问题。或与Google搜索相关的任何内容

我想知道以前是否有人(使用Midolnet或任何其他Java应用程序)曾见过此错误。其他有关如何调试它的建议将不胜感激。

这里是堆栈跟踪:

2020.05.22 16:49:40.212 ERROR [agent-services-pool-1] jna - Native method calls are not available java.lang.UnsatisfiedLinkError: Failed to create temporary file for /com/sun/jna/linux-x86-64/libjnidispatch.so library: Too many open files at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:962) ~[midolman.jar:5.4.6-Nectar-SNAPSHOT] at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:922) ~[midolman.jar:5.4.6-Nectar-SNAPSHOT] at com.sun.jna.Native.<clinit>(Native.java:190) ~[midolman.jar:5.4.6-Nectar-SNAPSHOT] at org.midonet.jna.CLibrary.<clinit>(CLibrary.java:45) ~[midolman.jar:5.4.6-Nectar-SNAPSHOT] at org.midonet.netlink.UnixDomainChannel.<init>(UnixDomainChannel.java:61) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at org.midonet.netlink.UnixDomainChannelImpl.<init>(UnixDomainChannelImpl.java:32) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [na:1.8.0_252] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [na:1.8.0_252] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [na:1.8.0_252] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) [na:1.8.0_252] at org.midonet.netlink.NetlinkSelectorProvider.makeInstanceOf(NetlinkSelectorProvider.java:143) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at org.midonet.netlink.NetlinkSelectorProvider.openUnixDomainSocketChannel(NetlinkSelectorProvider.java:118) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at org.midonet.services.rest_api.hacks.UnixDomainServerSocketChannel$.open(UnixDomainServerSocketChannel.scala:38) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at org.midonet.services.rest_api.hacks.UnixDomainServerSocketChannel.open(UnixDomainServerSocketChannel.scala) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at org.midonet.services.rest_api.hacks.UnixDomainServerConnector.open(UnixDomainServerConnector.java:341) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at org.midonet.services.rest_api.hacks.UnixDomainServerConnector.doStart(UnixDomainServerConnector.java:258) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at org.eclipse.jetty.server.Server.doStart(Server.java:384) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at org.midonet.services.rest_api.BindingApiService.doStart(BindingApiService.scala:113) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at com.google.common.util.concurrent.AbstractService.startAsync(AbstractService.java:203) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at org.midonet.minion.Daemon$$anonfun$org$midonet$minion$Daemon$$startMinion$1.apply(Daemon.scala:87) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at org.midonet.minion.Daemon$$anonfun$org$midonet$minion$Daemon$$startMinion$1.apply(Daemon.scala:83) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) [midolman.jar:5.4.6-Nectar-SNAPSHOT] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_252] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_252] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_252] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_252] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_252] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_252] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_252]

触发代码的Midonet代码为:

import com.sun.jna.Native; import com.sun.jna.Platform; ... static { try { Native.register(Platform.C_LIBRARY_NAME); } catch (NoClassDefFoundError | UnsatisfiedLinkError | NoSuchMethodError e) { log.error("Native method calls are not available", e); System.exit(-1); } }

我正在尝试诊断大型的第三方应用程序(Midonet)中的问题,当JNA尝试加载“ c”库时,该问题正在发生。日志条目(带有stacktrace)在下面。问题表现为...
java linux jna midonet
1个回答
0
投票
事实证明,问题根本不是JNA的错。
© www.soinside.com 2019 - 2024. All rights reserved.