[DubboServerHandler-127.0.0.1:2088-thread-50] ERROR c.a.o.shared.communication.core.CommunicationEndpoint - endpoint_error com.alibaba.otter.shared.communication.core.exception.CommunicationException: method_invoke_error:onNotifyChannel Caused by: java.lang.reflect.InvocationTargetException: null at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source) ~[na:na] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_151] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_151] at com.alibaba.otter.shared.communication.core.impl.AbstractCommunicationEndpoint.acceptEvent(AbstractCommunicationEndpoint.java:72) ~[shared.comm unication-4.2.16-SNAPSHOT.jar:na] at com.alibaba.dubbo.common.bytecode.Wrapper0.invokeMethod(Wrapper0.java) [na:2.5.3] at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:46) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:72) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:108) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:84) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:170) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:52) [dubbo-2.5.3.jar:2.5.3] at com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:82) [dubbo-2.5.3.jar:2.5.3] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_151] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_151] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_151] Caused by: java.lang.OutOfMemoryError: unable to create new native thread at java.lang.Thread.start0(Native Method) [na:1.8.0_151] at java.lang.Thread.start(Thread.java:717) [na:1.8.0_151] at com.alibaba.otter.node.etl.OtterController.startTask(OtterController.java:196) ~[node.etl-4.2.16-SNAPSHOT.jar:na] at com.alibaba.otter.node.etl.OtterController.startPipeline(OtterController.java:171) ~[node.etl-4.2.16-SNAPSHOT.jar:na] at com.alibaba.otter.node.etl.OtterController.process(OtterController.java:151) ~[node.etl-4.2.16-SNAPSHOT.jar:na] at com.alibaba.otter.node.common.config.impl.NodeTaskServiceImpl.notifyListener(NodeTaskServiceImpl.java:429) ~[node.common-4.2.16-SNAPSHOT.jar:na ] at com.alibaba.otter.node.common.config.impl.NodeTaskServiceImpl.onNotifyChannel(NodeTaskServiceImpl.java:421) ~[node.common-4.2.16-SNAPSHOT.jar:n a] ... 15 common frames omitted
请问如何解决?需要加机器还是修改配置?
原提问者Github用户 kangjiabang
这个问题可能是由于线程池中线程数量不足,导致创建线程失败。你可以尝试增加线程池中线程的数量,以提高系统的处理能力。
在Otter中,你可以通过修改配置文件来调整线程池的大小。具体来说,你可以在otter.properties文件中修改以下配置项来调整线程池的大小:
otter.node.push.thread.count=10 otter.node.pull.thread.count=10 这两个配置项分别指定了推送和拉取任务的线程池大小。你可以将它们适当增大,以提高系统的并发处理能力。
另外,你还可以使用系统监控工具来查看系统的资源使用情况,以确定是否存在其他资源瓶颈,例如CPU、内存等。如果系统存在其他资源瓶颈,你需要根据具体情况进行优化,以提高系统的性能和稳定性。
这个错误日志提示是Java应用程序的native thread资源已经耗尽,导致无法创建新的线程。这种情况通常是由于Java应用程序的内存限制或者操作系统限制导致的。
解决这个问题可以考虑以下几个方向:
增加Java应用程序的内存限制,可以通过修改Java虚拟机的启动参数来实现。具体可以通过增加-Xmx和-Xms参数来增加应用程序的堆内存,或者增加-XX:MaxDirectMemorySize参数来增加直接内存的限制。
检查操作系统的线程资源限制,可以通过使用ulimit命令来查看和修改操作系统线程资源限制。如果线程资源限制过小,可以适当增加操作系统的线程资源限制。
检查应用程序的代码实现,是否存在线程泄露或者线程创建过多的情况。如果存在这种情况,需要对代码进行优化,避免过多的线程创建和泄露。
如果以上方法都无法解决问题,可以考虑增加更多的机器资源。但在增加机器资源之前,需要先排除以上几个方向的问题。
总之,根据具体情况来选择合适的方案来解决这个问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。