Describe the bug
Performance tests show that in high load (request rate) scenarios, throughput is seen to vary a lot over time. The root cause isn't yet known, but using a fixed executor configuration addresses the issue. In server.xml:
<executor coreThreads="40" maxThreads="40"/>
Environment
Which version of IBM FHIR Server: 4.10.1
To Reproduce
Steps to reproduce the behavior:
Load synthea test data
Run fhir-bucket "interop" workload with a moderate thread-count
Observe the throughput rate vary over time
Add the executor configuration to the server.xml and restart the server
Run fhir-bucket "interop" workload with a moderate thread-count
Observe the throughput is improved and steady over time
Expected behavior
Liberty should automatically tune the thread pool size based on load, so it's unclear why the fixed executor configuration makes such a difference.
Additional context
This behavior had been observed before in much older versions of Liberty Profile. The executor thread pool tuning has since been improved and it was thought the fixed executor configuration was no longer required (the Liberty docs recommend to avoid such tuning if possible). More investigation is warranted, but fixed executor configuration above is a good work-around.
Describe the bug Performance tests show that in high load (request rate) scenarios, throughput is seen to vary a lot over time. The root cause isn't yet known, but using a fixed executor configuration addresses the issue. In server.xml:
Environment Which version of IBM FHIR Server: 4.10.1
To Reproduce Steps to reproduce the behavior:
Expected behavior Liberty should automatically tune the thread pool size based on load, so it's unclear why the fixed executor configuration makes such a difference.
Additional context This behavior had been observed before in much older versions of Liberty Profile. The executor thread pool tuning has since been improved and it was thought the fixed executor configuration was no longer required (the Liberty docs recommend to avoid such tuning if possible). More investigation is warranted, but fixed executor configuration above is a good work-around.