Skip to content

性能调优指南

此文档是基于并发用户为500的场景设置的,参数应根据实际情况自行调整。

1. 硬件资源

硬件配置应确保系统能处理高并发请求。推荐使用高性能的服务器硬件,具体配置如下:

  • CPU:多核高性能处理器
  • 内存:至少16GB
  • 存储:SSD硬盘,确保快速数据访问

2. Tomcat连接数和JVM配置

为提升在500并发下的系统性能,以下配置对Tomcat连接数和JVM参数进行了优化:

2.1 Tomcat连接数的配置

为了应对500并发的负载,需优化Tomcat的连接数。

Jar包方式:在 application.properties 文件中添加以下配置(路径:BOOT-INF/classes/application.properties):

properties
server.tomcat.uri-encoding=UTF-8
server.tomcat.accept-count=500    # 设置等待队列长度为500
server.tomcat.max-connections=1300 # 该值应大于等于max-threads+accept-count
server.tomcat.max-threads=800     # 设置最大工作线程数为800
server.tomcat.min-spare-threads=300 # 初始化并保持300个空闲线程

War包方式:在 conf/server.xml 文件中调整Connector配置:

xml
<Connector port="8067" protocol="org.apache.coyote.http11.Http11NioProtocol"
    connectionTimeout="120000"
    maxThreads="1300"
    maxSpareThreads="150"
    enableLookups="false"
    disableUploadTimeout="true"
    maxProcessors="100"
    minProcessors="15"
    maxHttpHeaderSize="8192"
    processorCache="100"
    acceptCount="500"
    minSpareThreads="300"
    acceptorThreadCount="8"
    URIEncoding="UTF-8"
    redirectPort="8443"
    keepAliveTimeout="120000"
    maxKeepAliveRequests="65535"
    compression="on"
    compressionMinSize="4096"
    noCompressionUserAgents="gozilla, traviata"
    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json,application/x-javascript"
/>

2.2 JVM配置

JVM参数的优化可以显著提升系统性能。

Jar包启动命令

bash
java -server -Xms8g -Xmx8g -Xmn4g \
    -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m \
    -XX:-UseAdaptiveSizePolicy \
    -XX:+PrintGCDetails \
    -XX:SurvivorRatio=8 \
    -XX:+UseG1GC \
    -XX:MaxGCPauseMillis=200 \
    -jar your-application.jar

War包方式:在 bin/catalina.bat 文件中的 set JAVA_OPTS 命令行设置参数。

JVM参数解释

参数说明
-Xms设置初始化堆内存大小
-Xmx设置最大可分配堆内存大小
-Xmn设置年轻代堆的大小,存放新创建的对象
-XX:MetaspaceSize元空间的初始值
-XX:MaxMetaspaceSize元空间的最大值
-XX:-UseAdaptiveSizePolicy关闭JVM堆内存分区大小自适应调整策略
-XX:+PrintGCDetails打印详细的GC收集日志
-XX:SurvivorRatio设置Eden和Survivor区的比例(值为8表示Eden是单个Survivor的8倍)
-XX:+UseG1GC启用G1垃圾回收器
-XX:MaxGCPauseMillis设定G1GC期望达到的最大垃圾收集停顿时间目标

注意:如果Java进程超过 -Xmx 设置的最大堆内存,将会抛出 java.lang.OutOfMemoryError

3. 数据库配置优化

为了提升数据库性能,对数据库进行优化配置,以MySQL数据库为例。

3.1 MySQL数据库配置

ini
# 设置事务隔离级别
transaction-isolation = READ-COMMITTED

# 设置数据库最大连接数
max_connections = 2000

# 设置默认存储引擎为InnoDB
default-storage-engine = INNODB

# MyISAM表索引缓冲区
key_buffer_size = 8M

# 顺序扫描缓冲区
read_buffer_size = 4M

# 随机读取缓冲区
read_rnd_buffer_size = 8M

# InnoDB核心内存缓冲区(根据服务器内存调整)
innodb_buffer_pool_size = 2G

备注:其他MySQL优化配置,请参考相关文档或咨询专业DBA进行优化。

3.2 已办/待办认领列表优化

8.2.3以前的版本需要添加以下索引(后续版本不需要):

sql
CREATE INDEX TW_HZ_WORKLIST_TRACKID ON TW_HZ_WORKLIST(TRACKID);
CREATE INDEX TW_HZ_WORKLIST_SUBJECTIONID ON TW_HZ_WORKLIST(SUBJECTION_ID);
CREATE INDEX TW_HZ_WORKLIST_STATUSNO ON TW_HZ_WORKLIST(STATUS_NO);
CREATE INDEX TW_HZ_WORKLIST_DONE_STATUSNO ON TW_HZ_WORKLIST_DONE(STATUS_NO);
CREATE INDEX TW_HZ_WORKLIST_DONE_AGENTID ON TW_HZ_WORKLIST_DONE(AGENT_ID);

需要配合 horizon-workflow-extend-8.2.3.jar 包(8.2.2之前的版本需咨询开发部提供)。

4. 产品应用程序配置

4.1 配置 dbconfig.properties

dbconfig.properties 文件中,设置以下参数来优化连接池:

properties
horizon.db.maxPoolSize=800
horizon.db.minPoolSize=300
horizon.db.initialPoolSize=300
  • Jar包路径BOOT-INF/classes/workflow-conf/properties/dbconfig.properties
  • War包路径WEB-INF/workflow-conf/properties/dbconfig.properties

此配置适用于并发量为500的场景。

4.2 配置定时任务数

修改 workflow-context.xml 中的定时任务配置,以优化任务调度:

定时任务配置

  • Jar包路径WEB-INF/workflow-conf/workflow-context.xml
  • War包路径WEB-INF/workflow-conf/workflow-context.xml

此配置适用于并发量为500的场景。

4.3 配置线程数

调整 horizon-workflow-pub.jar 包中的 hzwf_config.properties 配置文件,包括设置线程数量和最大缓存实例数量。

修改线程数量

打开 hzwf_config.properties 文件,根据需要修改线程数:

线程配置

修改缓存实例数

缓存配置

备注:此配置适用于并发量为500的场景。