Modify configuration properties to troubleshoot issues and tune performance
Typically modified values
# increase in case of a large DB server and much Data Store-related work
wf.datastore.connection.pool.max.connections
# increase when there are many simultaneously running BP instances
# default value changed to 40 in Control Tower 10.0 from value 3 in versions before
bp.step.transition.pool.size
Configuration in workfusion.properties
Database connection settings
The maximum number of concurrent database (DB) connections should be equal to or exceed the count of Control Tower (CT) BEP Workers running on the cluster.
Each BEP Worker can connect to a Data Store (DS) with it own connection pool. There is no shared connection pool for all CT BEP Workers.
# minimum number of connections in a CT DB connection pool
mturkds.database.c3p0.min_size=20
# upper limit of DB connections in the pool
mturkds.database.c3p0.max_size=300
# upper limit of the Data Store DB connections in the pool (used by direct JDBC calls in DS plug-ins)
wf.datastore.connection.pool.max.connections=30
Bot Task execution settings
# thread pool size used by the Bot Task executor without the specified Bot Source
bot.source.thread.pool.size.default=5
# number of concurrently processed bot record results (both successful and failed)
wf.bot.execution.results.handler.pool.size=20
# number of concurrently scheduled Bot Tasks after the step transition
wf.bot.execution.step.transition.pool.size=3
# max number of queued bot execution results waiting for result handling
wf.bot.execution.pending.write.queue.size=100
Business Process lifecycle task settings
# upper limit for HIT batch transitioned between steps
step.transition.hit.batch.size=1000
# number of parallel threads to use for human HIT review
reviewable.hit.processor.pool.size=4
# number of parallel threads to use for human HIT assignment retrieval
assignment.retriever.pool.size=4
# number of parallel threads to use for BP state transitions, for example, human HIT submission, step completion, step transition, and so on
bp.step.transition.pool.size=3
# worker lock wait timeout in milliseconds (usually used for worker answer processing)
worker.lock.timeout.millis=60000
# increase it in case of long GC pauses
hazelcast.max.no.heartbeat.seconds=60
Troubleshooting settings
# boolean value whether the report striped runnable execution delays
striped.runnable.queue.wait.report=false
# sliding window size for delay stats accumulation
striped.runnable.queue.wait.sliding.window.interval.minutes=30
# sliding window size for accumulating hit review lock stats
hit.review.lock.wait.sliding.window.interval.minutes=30
# boolean value whether the report is allocated stats
thread.allocated.bytes.report=true