How do you tune your software configuration?
There are lots of configurations that one needs to set for a software system. Some affect the performance (e.g., batch size), and some are necessary for correctness (e.g., a reasonable timeout value).
How do you set the configuration values in your software products?
For instance, what happens if the workload changes and a higher batch size gives a higher throughput? Do you manually change the configurations or use third-party software to set it for you?
I believe this is hard to do manually, but I'm unsure if an automatic solution exists to solve it.
Depends on a lot of things,
- What is your input : a stream, files, a queue (rabbit, kafka,...)?
- How often do you need to process your input?
- Can you scale at will/need?
- What is the max quantity of data per second you can recieve from your source?
- What is the maximum rate of data your infrastructure can absorb in input?
Usually you try not to update your software config every 5 minutes. You find one that suits best your infrastructure.