I've been running ATS at the edge with keepalive enabled. After some digging I found that ATS creates new connections (by default) for all post requests, instead of re-using a connection. The comment in the code looks like this was (is?) because of some race condition inside ATS. I noticed that there is a config option (proxy.config.http.keep_alive_ post_out) which enables the connection re-use for post requests, and it seems to work. Does anyone have any knowledge/experience with this configuration option? Or anything about this race condition?
In addition to the possible bug, if you leave it on the default (new connection per post) it returns the connection to the keep alive pool and I notice 10x latency on all post requests.