Apusic文档中心
首页
  • 应用服务器 AAS
  • 负载均衡器 ALB
  • 分布式消息队列 ADMQ
  • 分布式缓存 AMDC
  • 分布式配置中心 ADCC
  • Java开发工具包软件 AJDK
  • 搜索引擎 ASE
  • 中间件云平台 ACP
  • 统一管理平台 AUMP
  • 云原生中间件管理 ACMP
  • DevOps平台 ADOP
  • 许可授权中心 ACLS
  • Copilot智能问答系统 ACS
  • 监控平台 AMP
  • 智能日志 AILP
  • 应用性能管理 AAPM
  • 智能告警 AAlarm
  • 主数据管理 AMDM
  • 数据交换平台 ADXP
  • 企业服务总线 AESB
  • 数据智脑 ADPR
  • 服务治理 ASGP
  • 统一身份管理 AIDM
  • 标准模板
  • Markdown教程 (opens new window)
  • VuePress官方社区 (opens new window)
  • 帮助
贡献文档 (opens new window)
首页
  • 应用服务器 AAS
  • 负载均衡器 ALB
  • 分布式消息队列 ADMQ
  • 分布式缓存 AMDC
  • 分布式配置中心 ADCC
  • Java开发工具包软件 AJDK
  • 搜索引擎 ASE
  • 中间件云平台 ACP
  • 统一管理平台 AUMP
  • 云原生中间件管理 ACMP
  • DevOps平台 ADOP
  • 许可授权中心 ACLS
  • Copilot智能问答系统 ACS
  • 监控平台 AMP
  • 智能日志 AILP
  • 应用性能管理 AAPM
  • 智能告警 AAlarm
  • 主数据管理 AMDM
  • 数据交换平台 ADXP
  • 企业服务总线 AESB
  • 数据智脑 ADPR
  • 服务治理 ASGP
  • 统一身份管理 AIDM
  • 标准模板
  • Markdown教程 (opens new window)
  • VuePress官方社区 (opens new window)
  • 帮助
贡献文档 (opens new window)
文档中心
  • 金蝶Apusic数据智脑

  • 金蝶Apusic数据交换

  • 金蝶Apusic企业服务总线

    • 产品简介
    • 产品白皮书
    • 快速入门
    • Monitor使用手册
    • 性能调优手册
    • 常见问题
  • 金蝶Apusic主数据管理

  • 金蝶Apusic服务治理平台

  • 金蝶Apusic统一身份管理

性能调优手册

# JDK优化

# JDK选择

  1. AESB每个版本都有默认的出厂JDK配置说明,这是产品开发和测试使用的JDK版本,经过了充分的测试。但根据实际情况(如JDK造成的BUG,或性能等问题)也可选择其他的配置替代。

  2. 因为JDK版本向下兼容,所以尽量选择比推荐配置高版本的JDK,但大版本不一致需验证。可选择第三方JDK(如JRockit,IBM JDK等等),不同JDK有一些不同的特性,在一些特定场景下,性能会有提升。

  3. 默认32位JDK对内存支持有限,如需使用更大的内存,可选择64位的JDK。

# 参数调整

AESB 的参数调整需修改%AESB_MANAGER_HOME%/bin、%AESB_LB_HOME%/bin和%AESB_RUNTIME_HOME% /bin目录下的startesb.cmd(Windows)或者startesb(Linux)文件中的JVM_OPTS变量。

JVM参 数调整可参考官方参数说明文档:[http://www.oracle.com/technetwork/java/javase/tech /vmoptions-jsp-140102.html](http://www.oracle.com/technetwork/java/javase/tech /vmoptions-jsp-140102.html)(中文版本:[http://kenwublog.com/docs/java6-jvm- options-chinese-edition.htm](http://kenwublog.com/docs/java6-jvm- options-chinese-edition.htm))

常用的参数调整主要涉及内存大小调整和GC策略调整:

  1. 内存调整除 了最常见的 -Xms、-Xmx 外还包含了对 -XX:NewSize、-XX:MaxNewSize、-XX:SurvivorRatio、-Xss 等参数的调整,内存参数的调整是一个测试调整再测试的一个持续的优化的过程,因为运行行为以及机器环境的不同,没有通用的参数

  2. 有四种 GC 策略-XX:-UseConcMarkSweepGC、-XX:-UseParallelGC、-XX:-UseParallelOldGC、-XX:-UseSerialGC可根据情况调整,其中 -XX:-UseConcMarkSweepGC可降低大并发时用户的停顿。

# AESB调优

# 流程调优

  1. 流程的全局配置

    • 配置集群属性为“负载均衡”,可让同一个流程运行在多个运行服务器上,从而提高性能(流程是否能配置为负载均衡需根据流程特性决定,如文件监控就不适合配置为负载均衡)。
    • 全局事务在高并发情况下性能影响明显,如果流程本身无事务相关操作(主要还是数据库和MQ),可选择关闭事务。
    • 流程实例数即执行此流程的最大线程数量,增大此数值可大大提高高并发时流程响应。此数值也需根据流程特性决定。
    • 日志记录即流程实例运行的数据库历史记录,关闭此选项流程能提高运行性能 但不再记录流程的运行状况,Monitor也不能查询到相关的执行记录(错误的流程运行除外)。
  2. 全局变量管理 将“优化变量”设为不启用,如果勾选的话,会做一些回收后续节点不再使用的变量的操作,关闭此项可提高流程运行性能。

# WS服务调优

  1. 服务的集群属性即负载均衡,让同一个服务运行在多个运行服务器上从而提高性能,此属性需根据服务特性决定。

  2. 服务运行日志的记录也会关系到流程实例运行性能,实际情形中如不需要记录日志则可不选。

# 调节日志

通过修改logging.xml文件,调节日志级别,可以降低系统写日志所带来的开销。

日志的级别分为DEBUG、INFO、WARN、ERROR四种,级别的大小顺序为:DEBUG <INFO <WARN <ERROR。在压力、性能测试时,尽可能将日志的级别调整为最高级别ERROR,从而减少不必要的日志输出,达到提高性能的目的。

在 AESB中有几个配置文件控制了日志的输出,包括logging.xml、process-log.xml、esb.conf等,这几个配置文件都放 在%AESB_MANAGER_HOME%/config、%AESB_LB_HOME%/config和%AESB_RUNTIME_HOME% /config目录下。

# 调整logging.xml

设置默认全局日志级别为ERROR

<handler class="com.apusic.logging.ConsoleHandler">
  <property name="level" value="INFO"/>
</handler>
1
2
3

调整为:

<handler class="com.apusic.logging.ConsoleHandler">
  <property name="level" value="ERROR"/>
</handler>
1
2
3

接下来配置各个包的日志输出级别,比如:配置以apusic.mq开头的包,其下的JAVA日志输出级别调整为ERROR

<logger name="apusic.mq" level="INFO">
  <handler class="java.util.logging.FileHandler">
    <property name="level" value="INFO" />
    <property name="limit" value="2000000" />
    <property name="count" value="20" />
    <property name="pattern" value="%h/logs/mq_info.log" />
    <property name="append" value="true" />
    <formatter class="com.apusic.logging.SimpleFormatter" />
  </handler>
</logger>
1
2
3
4
5
6
7
8
9
10

调整为:

<logger name="apusic.mq" level="ERROR">
  <handler class="java.util.logging.FileHandler">
    <property name="level" value="INFO" />
    <property name="limit" value="2000000" />
    <property name="count" value="20" />
    <property name="pattern" value="%h/logs/mq_info.log" />
    <property name="append" value="true" />
    <formatter class="com.apusic.logging.SimpleFormatter" />
  </handler>
</logger>
1
2
3
4
5
6
7
8
9
10

其它几个logger同样可以配置为ERROR级别。

此调整的目的是,在记录日志文件时,有关esb的日志只记录ERROR级别的日志。其实这个调整在非压力测试的情况下也是可以调整的,在AESB稳定运行期,只需要记录错误日志就够了。只有在流程设计期,需要调试流程时才将非错误日志输出。

# 调整process-log.xml

将以下内容:

<root>
  <level value="DEBUG"/>
  <appender-ref ref="STDOUT" />
  <appender-ref ref="file_appender" />
</root>
1
2
3
4
5

调整为:

<root>
  <level value="ERROR"/>
  <appender-ref ref="STDOUT" />
  <appender-ref ref="file_appender" />
</root>

1
2
3
4
5
6

此调整的目的是,在消息流程实例运行时,只在控制台输出流程执行过程中的错误。对于非错误日志,例如流程执行过程日志,不进行输出。其 实这个调整在非压力测试的情况下也是可以调整的,在AESB稳定运行期,只需要记录错误日志就够了。只有在流程设计期,需要调试流程时才将非错误日志输 出。

# 调整运行服务器esb.conf,不记录流程日志

将以下内容:

<SERVICE CLASS="com.apusic.esb.runtime.process.mbean.ProcessRuntimeService">
  <ATTRIBUTE NAME="NeedSendMailIfException" VALUE="False"/>
  <ATTRIBUTE NAME="StoreLog" VALUE="True"/>
  <ATTRIBUTE NAME="EnableDebug" VALUE="True"/>
</SERVICE>
1
2
3
4
5

调整为:

<SERVICE CLASS="com.apusic.esb.runtime.process.mbean.ProcessRuntimeService">
  <ATTRIBUTE NAME="NeedSendMailIfException" VALUE="False"/>
  <ATTRIBUTE NAME="StoreLog" VALUE="False"/>
  <ATTRIBUTE NAME="EnableDebug" VALUE="True"/>
</SERVICE>
1
2
3
4
5

关闭消息流程实例运行时记录数据库日志的功能,使得流程在运行时不再记录数据库,从而提高流程运行的效率。这个调整一般只适合在做压力测试时,在正常运行的时候,往往还是需要记录数据库日志的。

# 系统数据库

AESB无默认系统数据库,可参看数据源配置。根据目标数据库类型进行初始化,系统数据库的性能会影响到流程和服务运行时日志记录效率,选择性能优异的数据库有助于AESB性能提高。

# esb.conf文件中性能相关调整

# 减少多路复用池连接的反复创建

<SERVICE CLASS="com.apusic.util.ThreadPoolService NAME="apusic:service=ThreadPool,name=MuxHandler">
  ....
  <ATTRIBUTE NAME="IdleTimeout" VALUE="60"/>
  <ATTRIBUTE NAME="MinSpareThreads" VALUE="5"/>
  <ATTRIBUTE NAME="MaxSpareThreads" VALUE="10"/>
  <ATTRIBUTE NAME="MaxThreads" VALUE="10"/>
  <ATTRIBUTE NAME="MaxQueueSize" VALUE="500"/>
</SERVICE>
1
2
3
4
5
6
7
8

调整为:

<SERVICE CLASS="com.apusic.util.ThreadPoolService" NAME="apusic:service=ThreadPool,name=MuxHandler">
  ....
  <ATTRIBUTE NAME="IdleTimeout" VALUE="60"/>
  <ATTRIBUTE NAME="MinSpareThreads" VALUE="5"/>
  <ATTRIBUTE NAME="MaxSpareThreads" VALUE="10"/>
  <ATTRIBUTE NAME="MaxThreads" VALUE="30"/>
  <ATTRIBUTE NAME="MaxQueueSize" VALUE="5000"/>
</SERVICE>
1
2
3
4
5
6
7
8

# HTTP池与多路复用池容量比例在3:1左右

<SERVICE CLASS="com.apusic.util.ThreadPoolService" NAME="apusic:service=ThreadPool,name=HTTPHandler">
  ....
  <ATTRIBUTE NAME="IdleTimeout" VALUE="60"/>
  <ATTRIBUTE NAME="MinSpareThreads" VALUE="10"/>
  <ATTRIBUTE NAME="MaxSpareThreads" VALUE="30"/>
  <ATTRIBUTE NAME="MaxThreads" VALUE="100"/>
  <ATTRIBUTE NAME="MaxQueueSize" VALUE="5000"/>
</SERVICE>
1
2
3
4
5
6
7
8

属性配置描述,可根据描述信息,进行适当调整。

线程池配置属性描述:

属性 描述 值类型 缺省值
MinSpareThreads 此属性决定线程池中的最小备用线程数 整型 5
MaxSpareThreads 此属性决定线程池中的最大备用线程数 整型 30
MaxThreads 此属性决定线程池所能提供的最大线程数,-1表示不限数量 整型 30
MaxQueueSize 此属性决定等待获取线程队列的最大长度(可以适当加大) 整型 500
IdleTimeout 等待超时时间,当线程池中的某个线程等待被使用的实际时间超过此属性数值时,线程池自动关闭此线程 整型(秒) 300

# WebService部分参数调整

<SERVICE CLASS="com.apusic.web.WebService">
  <ATTRIBUTE NAME="MaxWaitingClients" VALUE="5000"/>
  <ATTRIBUTE NAME="WaitingClientTimeout" VALUE="60"/>
  <ATTRIBUTE NAME="KeepAlive" VALUE="True"/>
  <ATTRIBUTE NAME="KeepAliveTimeout" VALUE="30"/>
  <ATTRIBUTE NAME="MaxKeepAliveRequests" VALUE="1000"/>
  <ATTRIBUTE NAME="MaxKeepAliveConnections" VALUE="1000"/>
  <ATTRIBUTE NAME="NumberSelectors" VALUE="1"/>
  <ATTRIBUTE NAME="ServletReloadCheckInterval" VALUE="30000000"/>
  <ATTRIBUTE NAME="EnableLog" VALUE="False"/>
  <ATTRIBUTE NAME="LogFileName" VALUE="logs/access.log"/>
  <ATTRIBUTE NAME="LogFileLimit" VALUE="1000000"/>
  <ATTRIBUTE NAME="LogFileCount" VALUE="10"/>
</SERVICE>
1
2
3
4
5
6
7
8
9
10
11
12
13
14

属性配置描述,可根据描述信息,进行适当调整。

WebService配置属性描述:

属性 描述 值类型 缺省值
WaitingClientTimeout 表示当队列已满时经过多长时间将请求抛弃(如果期望在测试中少出现访问失败,而对时间响应要求可以容忍慢一些,该参数可适当加大) 整型(秒) 60
MaxWaitingClients 如果当前并发用户数已达到最大值,则客户请求被保持到一个队列中,此参数决定此队列可保持的最大等待客户请求数(如果期望在测试中少出现访问失败,而对时间响应要求可以容忍慢一些,该参数可适当加大) 整型 5000
KeepAlive 此属性决定是否保持与当前客户端的连接(最好为True,复用socket) True或False True
KeepAliveTimeout 与当前客户端连接的超时数(如果客户端访问不是太频繁,可适当增大该值) 整型(秒) 30
MaxKeepAliveRequests 客户端请求被保持到一个请求队列,此属性用于决定请求队列可保持的最大客户端请求数 整型 100
MaxKeepAliveConnections 表示系统同时保存的最大连接个数,超过这一个数时最近最少被使用的连接将被关闭(和上一个参数保持适当的比例) 整型 300
ServletReloadCheckInterval 检查Servlet 是否被修改的时间间隔(如果系统可以长时间不变,可将该值设的大一些,在AESB压力测试时,不存在servlet装载的问题,这个值可以调到非常大,如3000000000000) 整型(秒) 864000
编辑页面 (opens new window)

← Monitor使用手册 常见问题→

  • 浅色模式