Hello,
I have worked lately on the patch that tries to mitigate one performance problem in core:action.c file. I am talking about the multiple calls to mk_proxy(), and the creation of temporary proxies for each FORWARD_T action that the daemon executes.
I think this behaviour can be improved by caching certain proxies. My idea is this:
* If the next_hop matches a name in the alias list (for example we have an alias for example.com and the next_hop is proxy1.example.com), then cache the proxy by calling add_proxy instead of mk_proxy. If the proxy is already cached a pointer is returned, if not it is created and added (the functionality already exists in proxy.c) * For all other hosts a temporary proxy is made(same as now).
This whole logic can be turned off(default)/on by a parameter in .cfg.
I have run some tests and this can lead to big improvemets (because mk_proxy mean some pkg_malloc - fast but also some DNS resolving - slow). This might benefit some medium-large setups where you have some servers forwarding request to other application servers, etc.
The patch is very small and it's already done and finished. I will provide it tomorrow if somebody thinks this idea is good
Cheers
Marius