1、問題java
在測試環境遇到的異常信息,以下:git
16-10-17 00:00:00.033 [New I/O server worker #1-6] WARN com.alibaba.dubbo.common.threadpool.support.AbortPolicyWithReport – [DUBBO] Thread pool is EXHAUSTED! Thread Name: DubboServerHandler-10.0.0.77:20703, Pool Size: 500 (active: 500, core: 500, max: 500, largest: 500), Task: 5897697 (completed: 5897197), Executor status:(isShutdown:false, isTerminated:false, isTerminating:false), in dubbo://10.0.0.77:20703!, dubbo version: 2.5.3, current host: 127.0.0.116-10-17 00:00:00.033 [New I/O server worker #1-6] WARN org.jboss.netty.channel.DefaultChannelPipeline – [DUBBO] An exception was thrown by a user handler while handling an exception event ([id: 0x3c650867, /10.0.0.83:53184 => /10.0.0.77:20703] EXCEPTION: com.alibaba.dubbo.remoting.ExecutionException: class com.alibaba.dubbo.remoting.transport.dispatcher.all.AllChannelHandler error when process received event .), dubbo version: 2.5.3, current host: 127.0.0.1com.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) ~[dubbo-2.5.3.jar:2.5.3]github
項目的實際配置:緩存
<dubbo:provider timeout="50000" threadpool="fixed" threads="500" accepts="1000" />
服務器
timeout=」5000″:設置遠程調用服務的超時時間爲5000毫秒
threadpool=」fixed」:線程模型爲固定大小的線程池,啓動時創建線程,不關閉,一直持有
threads=」500″:線程數爲500
accepts=」1000″:限制服務器端的接受的鏈接的最大值爲1000ide
再看看dubbo官網上的線程模型的內容性能
Dispatcher測試
all 全部消息都派發到線程池,包括請求,響應,鏈接事件,斷開事件,心跳等。spa
direct 全部消息都不派發到線程池,所有在IO線程上直接執行。.net
message 只有請求響應消息派發到線程池,其它鏈接斷開事件,心跳等消息,直接在IO線程上執行。
execution 只請求消息派發到線程池,不含響應,響應和其它鏈接斷開事件,心跳等消息,直接在IO線程上執行。
connection 在IO線程上,將鏈接斷開事件放入隊列,有序逐個執行,其它消息派發到線程池。
ThreadPool
fixed 固定大小線程池,啓動時創建線程,不關閉,一直持有。(缺省)
cached 緩存線程池,空閒一分鐘自動刪除,須要時重建。
limited 可伸縮線程池,但池中的線程數只會增加不會收縮。(爲避免收縮時忽然來了大流量引發的性能問題)。
配置如:
|
配置標籤
<dubbo:provider/>
<dubbo:protocol/>
例:
<!– 當ProtocolConfig和ServiceConfig某屬性沒有配置時,採用此缺省值 –>
<dubbo:provider timeout=」10000″ threadpool=」fixed」 threads=」100″ accepts=」1000″ />
<dubbo:protocol/>
https://github.com/HadesJK/dubbo-demo