惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
IT之家
IT之家
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Security Archives - TechRepublic
Security Archives - TechRepublic
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
P
Palo Alto Networks Blog
Know Your Adversary
Know Your Adversary
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Cisco Talos Blog
Cisco Talos Blog
L
Lohrmann on Cybersecurity
AWS News Blog
AWS News Blog
J
Java Code Geeks
博客园_首页
Scott Helme
Scott Helme
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
V
Visual Studio Blog
Cloudbric
Cloudbric
Jina AI
Jina AI
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
A
Arctic Wolf
C
Cybersecurity and Infrastructure Security Agency CISA
S
SegmentFault 最新的问题
The Last Watchdog
The Last Watchdog
SecWiki News
SecWiki News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
W
WeLiveSecurity
K
Kaspersky official blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hacker News: Ask HN
Hacker News: Ask HN
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
宝玉的分享
宝玉的分享
Hugging Face - Blog
Hugging Face - Blog
量子位
Google Online Security Blog
Google Online Security Blog
博客园 - Franky
Simon Willison's Weblog
Simon Willison's Weblog
博客园 - 三生石上(FineUI控件)
Recent Commits to openclaw:main
Recent Commits to openclaw:main

王欣的博客

第6章:工具篇——使用 RunningHub(ComfyUI)生成短剧 - 王欣说AI|信息安全|AIGC|AI 第5章:工具篇——使用小云雀Agent生成短剧 - 王欣说AI|信息安全|AIGC|AI 第4篇:导演思维 + AI素材生成全流程 - 怎么用AI从0做出短剧/漫剧? - 王欣说AI|信息安全|AIGC|AI 马斯克出手!SpaceX 豪掷 600 亿美元锁定 Cursor,AI 编程江湖巨变 - 王欣说AI|信息安全|AIGC|AI 第3篇:编剧篇——一切从一个好故事开始 - 怎么用AI从0做出短剧/漫剧? - 王欣说AI|信息安全|AIGC|AI 第2篇:四项基本功——提示词、镜头语言、剪映、投流 - 怎么用AI从0做出短剧/漫剧? - 王欣说AI|信息安全|AIGC|AI 第1篇:为什么2026年是一个人拍短剧的最佳时机?- 怎么用AI从0做出短剧/漫剧? - 王欣说AI|信息安全|AIGC|AI 2026 AI 开发新范式:Harness Engineering(驾驭工程)为何是智能体的决胜点? - 王欣说AI|信息安全|AIGC|AI 通过Claude Code的源码分析其技术架构 - 王欣说AI|信息安全|AIGC|AI 没团队、没演员、没经验——我一个写代码的,用AI独自做完了短剧《顶级温差》 - 王欣说AI|信息安全|AIGC|AI 谁能替你操作电脑?OpenClaw vs Claude Code vs Codex 终极拆解 - 王欣说AI|信息安全|AIGC|AI OpenClaw macOS安装:飞书机器人一键生成小说+分镜 - 王欣说AI|信息安全|AIGC|AI AI公司亲自下场研究 Macos上跑Docker Desktop遇到registry-1.docker.io网络不通问题填坑笔记 - 王欣说AI|信息安全|AIGC|AI Macos上跑Docker Desktop遇到registry-1.docker.io网络不通问题填坑笔记 - 王欣的博客|微服务|RPC|信息安全|AIGC RocketMQ的死信队列你了解多少?怎么实现的? - 王欣说AI|信息安全|AIGC|AI RocketMQ的死信队列你了解多少?怎么实现的? - 王欣的博客|微服务|RPC|信息安全|AIGC Dubbo服务间的连接是怎么控制处理的? - 王欣说AI|信息安全|AIGC|AI Dubbo服务间的连接是怎么控制处理的? - 王欣的博客|微服务|RPC|信息安全|AIGC Seata 基本原理和源码分析 - 王欣说AI|微服务|RPC|信息安全|AIGC 分布式事务一致性算法Paxos、raft、zab等的比较 - 王欣说AI|微服务|RPC|信息安全|AIGC 谈谈各种流程引擎、规则引擎 - 王欣说AI|微服务|RPC|信息安全|AIGC 从netty组件的传输讲讲io - 王欣说AI|微服务|RPC|信息安全|AIGC JVM内存结构的历史 (从Jdk1.6、1.7、8) - 王欣说AI|信息安全|AIGC|AI 怎么定位线上的内存溢出? - 王欣说AI|微服务|RPC|信息安全|AIGC MQ组件盘点,哪些你用在了生产中? - 王欣说AI|信息安全|AIGC|AI JVM内存结构的历史 (从Jdk1.6、1.7、8) - 王欣的博客|微服务|RPC|信息安全|AIGC 怎么定位线上的内存溢出? - 王欣的博客|微服务|RPC|信息安全|AIGC Seata 基本原理和源码分析 - 王欣的博客|微服务|RPC|信息安全|AIGC 分布式事务一致性算法Paxos、raft、zab等的比较 - 王欣的博客|微服务|RPC|信息安全|AIGC 谈谈各种流程引擎、规则引擎 - 王欣的博客|微服务|RPC|信息安全|AIGC 从netty组件的传输讲讲io - 王欣的博客|微服务|RPC|信息安全|AIGC MQ组件盘点,哪些你用在了生产中? - 王欣的博客|微服务|RPC|信息安全|AIGC 一些有用的github配置 - 王欣说AI|信息安全|AIGC|AI 一些有用的github配置 - 王欣的博客|微服务|RPC|信息安全|AIGC 我看《subscribed》 - 王欣说AI|信息安全|AIGC|AI 我看《subscribed》 - 王欣的博客|微服务|RPC|信息安全|AIGC 为什么Redis读写快? - 王欣说AI|微服务|RPC|信息安全|AIGC 为什么Redis读写快? - 王欣的博客|微服务|RPC|信息安全|AIGC Dubbo代码分析—超时和重试设计 - 王欣说AI|微服务|RPC|信息安全|AIGC Dubbo代码分析—超时和重试设计 - 王欣的博客|微服务|RPC|信息安全|AIGC 【译】apache 基金会角色列表 - 王欣说AI|微服务|RPC|信息安全|AIGC 【译】apache 基金会角色列表 - 王欣的博客|微服务|RPC|信息安全|AIGC rpc跟踪日志常用shell统计脚本 - 王欣说AI|微服务|RPC|信息安全|AIGC Dubbo代码分析---服务端线程池 - 王欣的博客|微服务|RPC|信息安全|AIGC rpc跟踪日志常用shell统计脚本 - 王欣的博客|微服务|RPC|信息安全|AIGC 并发 - 谈谈HashMap和ConcurrentHashMap - 王欣说AI|微服务|RPC|信息安全|AIGC 并发 - 谈谈HashMap和ConcurrentHashMap - 王欣的博客|微服务|RPC|信息安全|AIGC JVM基本结构 - 王欣说AI|微服务|RPC|信息安全|AIGC JVM基本结构 - 王欣的博客|微服务|RPC|信息安全|AIGC 血的教训:线程池定义一定要全局化,共享使用 - 王欣说AI|微服务|RPC|信息安全|AIGC 谈谈并发包的工具都是用在什么地方,底层是怎么实现的? - 王欣说AI|信息安全|AIGC|AI 血的教训:线程池定义一定要全局化,共享使用 - 王欣的博客|微服务|RPC|信息安全|AIGC
Dubbo代码分析---服务端线程池 - 王欣说AI|微服务|RPC|信息安全|AIGC
2019-01-01 · via 王欣的博客

Dubbo代码分析---服务端线程池

一、Dubbo服务端线程池耗尽问题

在使用Dubbo的过程中,在服务端压力大时候我们常常会遇到说线程池耗尽的这样一个错误日志:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
17:54:34,026 WARN [New I/O server worker #1-4] -  [DUBBO] Thread pool is EXHAUSTED! Thread Name: DubboServerHandler-10.8.64.57:20880, Pool Size: 300 (active: 300, core: 300, max: 300, largest: 300), Task: 5821 (completed: 5621), Executor status:(isShutdown:false, isTerminated:false, isTerminating:false), in dubbo:
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:432)
at org.jboss.netty.channel.AbstractChannelSink.exceptionCaught(AbstractChannelSink.java:52)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)
at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalDecoder.messageReceived(NettyCodecAdapter.java:148)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:350)
at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:281)
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:201)
at org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)

Caused by: java.util.concurrent.RejectedExecutionException: Thread pool is EXHAUSTED! Thread Name: DubboServerHandler-10.8.64.57:20880, Pool Size: 300 (active: 300, core: 300, max: 300, largest: 300), Task: 5821

我们从错误堆栈可以看到,是服务端线程池溢出了。

二、源码分析
看一下服务端线程池代码是怎么写的,起到什么作用

画图 dubbo客户端调用服务端线程池的示意图

三、线程池知识

解释一下线程池的定义是用来干嘛的。

一些处理的办法:
适当加大服务端线程池,找到合理的配置。这个关联一线程池的配合准则,链接到老的文章。

四、分析原因,处理建议

为什么线程池升高呢? 主要从流量、cpu数据率、负载、jvm日志几方面分析
1)流量过大?(加缓存、对于上游上游服务)
2) 扩机器:cpu核数的增加
3) 宿主机此时负载高?
4)自己代码优化
5) 设置客户端快速失败

程序慢?io过多?(并行io)