ESB文档库 ESB文档库
00 概述
01 产品安装指南
02 快速入门指南
03 ESB Studio使用指南
04 企业服务总线使用指南
05 高级配置指南
06 接口服务说明
07 升级&数据迁移指南
08 FAQ
  • 线程池在ESB Server中的作用
  • 线程池配置信息
  • 调优最佳实践

本节讲述了ESB中线程池相关的配置,通过本节你将了解到以下内容:

  1. ESB Server中都有哪些线程池,它们处于什么位置;
  2. 如何配置线程池的参数,各项参数的含义是什么;
  3. 运行时,线程池参数调优有哪些指导原则;

# 线程池在ESB Server中的作用

线程池配置是ESB性能调优的核心配置之一。一般而言,请求消息依次经过代理服务、中介服务、业务服务,响应消息以相反顺序依次返回,消息处理过程如下所示:

为提升ESB消息处理能力,在消息接收处配置了线程池机制,如上图中所示。根据消息的流向,线程池分为了请求线程池和响应线程池,如下:

  • 代理服务配有响应线程池
  • 中介服务配有请求、响应线程池
  • 业务服务配有请求线程池

# 线程池配置信息

线程池配置界面(以响应线程池为例)如下所示:

  • 支持本地、全局线程池配置

:勾选上图中的"采用全局配置"复选框,即为采用全局线程池,否则为本地线程池:

  • 本地线程池:为代理服务、业务服务及中介服务设置的独享线程池。本地线程池配置支持热更新;

  • 全局线程池:ESB Server的共享线程池。全局线程池配置支持热更新;

  • 最大线程数:线程池中线程数的最大值。

  • 核心线程数:线程池中线程数的最小值。

  • 队列容量:线程池中工作队列的容量值。

  • 存活时间:如果池中有多于核心线程数的线程,这些线程在空闲时间超过存活时间时将会被销毁。

  • 拒绝策略

:当线程池工作队列已满并且线程数达到最大值时,新请求到来时,将执行拒绝策略。支持ABORT、CALLER_RUNS、DISCARD、DISCARD_OLDEST四种拒绝策略:

  • ABORT:新请求被拒绝,并抛出RejectedExecutionException异常。
  • CALLER_RUNS:由新请求所在的线程直接处理请求,如果新请求所在的执行线程已关闭,则丢弃该请求。此策略提供简单的反馈控制机制,能够减缓新任务的提交速度。
  • DISCARD:直接丢弃被拒绝的请求。
  • DISCARD_OLDEST:如果新请求所在的执行线程尚未关闭,则位于工作队列头部的任务将被删除,然后重试执行程序(如果再次失败,则重复此过程)。

线程池配置信息的填写规则如下:

属性名称 填写规则
采用全局配置 选中或不选中
最大线程数 范围从1到100,支持设置int型的变量或常量
核心线程数 范围从1到100,支持设置int型的变量或常量
队列容量 范围从1到1500,支持设置int型的变量或常量
存活时间 范围从0到120,支持设置int型的变量或常量
拒绝策略 ABORT、 CALLER_RUNS、DISCARD、DISCARD_OLDEST

# 调优最佳实践

  1. 一般情况下,建议设置为本地线程池;
  2. 如果系统中运行的业务逻辑较多(多个Module),建议本地线程池中核心线程数设置不要过大,一般小于10即可。

← 3.4.3 JMS消息消费策略 3.5.1 HTTP穿透 →