开发者社区> 问答> 正文

otter线上应用报创建线程失败

[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

展开
收起
云上静思 2023-06-15 08:05:31 77 0
2 条回答
写回答
取消 提交回答
  • 值得去的地方都没有捷径

    这个问题可能是由于线程池中线程数量不足,导致创建线程失败。你可以尝试增加线程池中线程的数量,以提高系统的处理能力。

    在Otter中,你可以通过修改配置文件来调整线程池的大小。具体来说,你可以在otter.properties文件中修改以下配置项来调整线程池的大小:

    otter.node.push.thread.count=10 otter.node.pull.thread.count=10 这两个配置项分别指定了推送和拉取任务的线程池大小。你可以将它们适当增大,以提高系统的并发处理能力。

    另外,你还可以使用系统监控工具来查看系统的资源使用情况,以确定是否存在其他资源瓶颈,例如CPU、内存等。如果系统存在其他资源瓶颈,你需要根据具体情况进行优化,以提高系统的性能和稳定性。

    2023-06-15 16:47:28
    赞同 展开评论 打赏
  • 这个错误日志提示是Java应用程序的native thread资源已经耗尽,导致无法创建新的线程。这种情况通常是由于Java应用程序的内存限制或者操作系统限制导致的。

    解决这个问题可以考虑以下几个方向:

    1. 增加Java应用程序的内存限制,可以通过修改Java虚拟机的启动参数来实现。具体可以通过增加-Xmx和-Xms参数来增加应用程序的堆内存,或者增加-XX:MaxDirectMemorySize参数来增加直接内存的限制。

    2. 检查操作系统的线程资源限制,可以通过使用ulimit命令来查看和修改操作系统线程资源限制。如果线程资源限制过小,可以适当增加操作系统的线程资源限制。

    3. 检查应用程序的代码实现,是否存在线程泄露或者线程创建过多的情况。如果存在这种情况,需要对代码进行优化,避免过多的线程创建和泄露。

    4. 如果以上方法都无法解决问题,可以考虑增加更多的机器资源。但在增加机器资源之前,需要先排除以上几个方向的问题。

    总之,根据具体情况来选择合适的方案来解决这个问题。

    2023-06-15 08:40:49
    赞同 1 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载