Continuing my LBaaS look back series of blog posts for HP's Advanced Technology Group I am today looking into an issue that tripped us up with HAProxy.
Whilst we were working with HAProxy we naturally had many automated tests going through a Jenkins server. One such test was checking that the byte count in the logs tallied with bytes received, this would be used for billing purposes.
Whilst we were working with HAProxy we naturally had many automated tests going through a Jenkins server. One such test was checking that the byte count in the logs tallied with bytes received, this would be used for billing purposes.
Unfortunately we always found our byte counts a little off. At first we found it was due to dropped log messages. Even after this problem was solved we were still not getting an exact tally.
After some research and reading of code I found out that despite what the manual says the outgoing byte count is measured from the backend server to HAProxy, not the bytes leaving HAProxy. This means that injected headers are not in the byte count and if HAProxy is doing HTTP compression for you the count will be way off.
My findings were backed by this post from the HAProxy developer.
On average every log entry for us was off by around 30 bytes due to injected headers and cookies.
Given the link above this appears to be something the developer is looking into but I doubt it will be a trivial fix.
No comments:
Post a Comment
Note: only a member of this blog may post a comment.