性能调优指南
此文档是基于并发用户为500的场景设置的,参数应根据实际情况自行调整。
1. 硬件资源
硬件配置应确保系统能处理高并发请求。推荐使用高性能的服务器硬件,具体配置如下:
- CPU:多核高性能处理器
- 内存:至少16GB
- 存储:SSD硬盘,确保快速数据访问
2. Tomcat连接数和JVM配置
为提升在500并发下的系统性能,以下配置对Tomcat连接数和JVM参数进行了优化:
2.1 Tomcat连接数的配置
为了应对500并发的负载,需优化Tomcat的连接数。
Jar包方式:在 application.properties 文件中添加以下配置(路径:BOOT-INF/classes/application.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配置:
<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包启动命令:
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.jarWar包方式:在 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数据库配置
# 设置事务隔离级别
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以前的版本需要添加以下索引(后续版本不需要):
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 文件中,设置以下参数来优化连接池:
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的场景。
