zoukankan      html  css  js  c++  java
  • [Done][DUBBO] dubbo Thread pool is EXHAUSTED!

     异常信息:

    com.alibaba.dubbo.remoting.ExecutionException: class com.alibaba.dubbo.remoting.transport.dispatcher.all.AllChannelHandler error when process caught event .
            at com.alibaba.dubbo.remoting.transport.dispatcher.all.AllChannelHandler.caught(AllChannelHandler.java:67)
            at com.alibaba.dubbo.remoting.transport.AbstractChannelHandlerDelegate.caught(AbstractChannelHandlerDelegate.java:44)
            at com.alibaba.dubbo.remoting.transport.AbstractChannelHandlerDelegate.caught(AbstractChannelHandlerDelegate.java:44)
            at com.alibaba.dubbo.remoting.transport.AbstractPeer.caught(AbstractPeer.java:127)
            at com.alibaba.dubbo.remoting.transport.netty.NettyHandler.exceptionCaught(NettyHandler.java:112)
            at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalDecoder.exceptionCaught(NettyCodecAdapter.java:165)
            at org.jboss.netty.channel.Channels.fireExceptionCaught(Channels.java:525)
            at org.jboss.netty.channel.AbstractChannelSink.exceptionCaught(AbstractChannelSink.java:48)
            at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
            at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalDecoder.messageReceived(NettyCodecAdapter.java:148)
            at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
            at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
            at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
            at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109)
            at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312)
            at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)
            at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
            at java.lang.Thread.run(Thread.java:745)
    Caused by: java.util.concurrent.RejectedExecutionException: Thread pool is EXHAUSTED! Thread Name: DubboServerHandler-192.168.120.213:20880, 
    Pool Size: 200 (active: 200, core: 200, max: 200, largest: 200), Task: 3839523 (completed: 3839323),
    Executor status:(isShutdown:false, isTerminated:false, isTerminating:false), in dubbo://192.168.120.213:20880! at com.alibaba.dubbo.common.threadpool.support.AbortPolicyWithReport.rejectedExecution(AbortPolicyWithReport.java:53) at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:823) at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1369) at com.alibaba.dubbo.remoting.transport.dispatcher.all.AllChannelHandler.caught(AllChannelHandler.java:65) ... 19 common frames omitted

    提示线程池满了,若有新请求进入的时候,会拒绝执行。

    来一张官方的图:



     

    上图Dispatcher后面跟着的ThreadPool就是我们所说的业务线程池。Dispatcher分为5类,默认是all,解释也直接参考官方截图:

     而dubbo默认为all模式,查看源码(可见all模式下相关事件都使用了业务线程池):

    all模式下线程池:

    修改dubbo配置文件:

        <dubbo:protocol name="dubbo" port="${dubbo.port}" accesslog="false" threads="500" dispatcher="message"/>

    修改后,启用MessageOnlyChannelHandler,源码如下(此时只有receive业务方法独享线程池):

    参考: http://manzhizhen.iteye.com/blog/2391177

    以上。 

  • 相关阅读:
    c#中ref与out区别
    【转载】Firebug中net面板的使用
    结构声明、定义
    开始旅程了
    strcpy、strcat、strcmp、strlen
    #include 格式
    宏定义
    MySQL 字段类型
    MySQL 约束类型
    (转载)C#语言之“string格式的日期时间字符串转为DateTime类型”的方法
  • 原文地址:https://www.cnblogs.com/do-your-best/p/9794253.html
Copyright © 2011-2022 走看看