This repository has been archived by the owner on Dec 13, 2023. It is now read-only.
Fine tune conductor for scale and low latency #179
smuthusw123
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Goal: I have a workflow with 3 HTTP tasks. each task takes max of 300 ms. that means, a workflow can be completed in < 1 sec.
Env: Macbook Pro. I took the git clone and running the conductor via source code (gradlew bootRun). It uses the in-memory store. I did try postgres (end up with with server not starting and I saw bugs reported in this git)
Challenge:
when I run JMeter test and put only 1 request, i am able to get this latency. But if I try with 1000 requests, it takes lots of time.
Then I reduced my workflow with just 1 task. The task is HTTP and it takes 250ms. This is a spring boot hello world service with a Thread.sleep(250). If I test this service with 100 threads in JMeter, I get a throughput of 400 requests /sec. But when I run this via the conductor workflow, I get only 50 workflow / second.
Question:
how can I increase the throughput for a HTTP Task. i.e. the worker should be able to clear 400 requests / sec for the HTTP task queue and if I can complete 200 workflow / sec should also be OK with. Can you please suggest if this is possible from your experience?? if so, what is the fine tuning I need to do in application.properties / task definition / workflow definition.
I did read about isolation groups. But as soon as I define the property "isolationGroup" in my task / workflow definition as defined here (https://conductor.netflix.com/configuration/isolationgroups.html) it disappears. i.e. If I add this attribute via task definition["isolationgroupId": "myIsolationGroupId"], after saving it, it disappears. I did enable [conductor.app.isolatedSystemTaskEnabled=true] in the application.properties. Then ended up in using ["executionNameSpace": "myExecutionNameSpace"]. This has totally reduced by throughput of the HTTP task - like 10-20 requests / second. if I remove this attribute, it runs faster. Am I missing any configuration?
Appreciate your inputs. Thanks
Srini
Beta Was this translation helpful? Give feedback.
All reactions