Camunda7.18+Wildfly26:异步BPMN启动作业数受限,求REST API调优参数
Camunda REST API 并发调优方案(Wildfly 26 + Camunda 7.18)
针对你遇到的Camunda REST API并发瓶颈问题,结合Wildfly 26和Camunda 7.18的特性,可从以下几个维度进行调优:
一、Camunda REST应用专属参数调优
在Wildfly的standalone.xml或domain.xml的Camunda子系统中,添加或调整以下REST相关配置:
<subsystem xmlns="urn:org.camunda.bpm.jboss:1.1"> <!-- 已有的JobExecutor配置 --> <job-executor> <property name="queueSize">50</property> <property name="corePoolSize">150</property> <property name="maxPoolSize">250</property> <property name="keepAliveTime">10</property> <property name="lockTimeInMillis">900000</property> <property name="waitTimeInMillis">5000</property> <property name="maxJobsPerAcquisition">50</property> </job-executor> <!-- 添加REST API调优参数 --> <properties> <!-- 控制REST客户端总连接数 --> <property name="rest-api.max-total-connections">200</property> <!-- 单路由最大连接数 --> <property name="rest-api.max-connections-per-route">100</property> <!-- 请求超时时间(毫秒),避免请求长期堆积 --> <property name="rest-api.request-timeout">30000</property> </properties> </subsystem>
二、Wildfly Undertow容器线程池调优
Wildfly使用Undertow作为Web服务器,其线程池配置直接影响REST API的并发处理能力,调整standalone.xml中的Undertow子系统:
<subsystem xmlns="urn:jboss:domain:undertow:12.0"> <buffer-cache name="default"/> <!-- 调整Worker线程池:io-threads对应CPU核心数,task线程池处理业务逻辑 --> <worker name="default" io-threads="8" task-core-threads="200" task-max-threads="300" task-keepalive="60"/> <server name="default-server"> <http-listener name="default" socket-binding="http" max-connections="1000" queue-size="200" connection-timeout="30000"/> <!-- 其他配置... --> </server> </subsystem>
io-threads:建议设置为CPU核心数的1-2倍,负责IO操作task-core-threads/task-max-threads:控制处理HTTP请求的业务线程数,需根据并发量调整max-connections/queue-size:控制最大连接数和等待队列长度,避免请求被直接拒绝
三、Wildfly数据库连接池调优
REST API启动流程实例、JobExecutor执行作业都依赖数据库连接,需确保数据源连接池足够:
<datasource jndi-name="java:jboss/datasources/CamundaDS" pool-name="CamundaDS" enabled="true"> <connection-url>jdbc:mysql://your-mysql-host:3306/camunda</connection-url> <driver-class>com.mysql.cj.jdbc.Driver</driver-class> <security> <user-name>camunda</user-name> <password>camunda</password> </security> <!-- 调整连接池参数 --> <pool> <max-pool-size>200</max-pool-size> <min-pool-size>50</min-pool-size> <prefill>true</prefill> <use-strict-min>false</use-strict-min> </pool> <validation> <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/> <validate-on-match>true</validate-on-match> <background-validation>false</background-validation> </validation> </datasource>
max-pool-size:需大于等于JobExecutor的maxPoolSize+ REST API并发线程数,避免连接耗尽
四、额外排查点
- 检查Camunda REST应用的
web.xml,确保开启异步支持:
<servlet> <servlet-name>CamundaRestApi</servlet-name> <servlet-class>org.camunda.bpm.engine.rest.impl.application.DefaultResourceConfig</servlet-class> <async-supported>true</async-supported> </servlet>
- 通过Wildfly管理控制台(http://your-wildfly-host:9990)监控:
- Undertow线程池的活跃线程数、队列长度
- Camunda JobExecutor的线程使用情况
- 数据库连接池的连接使用量
- 排查
ACT_RU_JOB表的慢查询,确保JobExecutor获取作业的SQL有正确索引(比如LOCK_EXP_TIME_、RETRIES_字段的索引)
内容的提问来源于stack exchange,提问作者Lucia
相关产品推荐
相关产品推荐

