mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-27 23:22:09 +00:00
haproxy public development tree
82cd5c13a5
For some algos (roundrobin, static-rr, leastconn, first) we know that if there is any request queued in the backend, it's because a previous attempt failed at finding a suitable server after trying all of them. This alone is sufficient to decide that the next request will skip the LB algo and directly reach the backend's queue. Doing this alone avoids an O(N) lookup when load-balancing on a saturated farm of N servers, which starts to be very expensive for hundreds of servers, especially under the lbprm lock. This change alone has increased the request rate from 110k to 148k RPS for 200 saturated servers on 8 threads, and fwlc_reposition_srv() doesn't show up anymore in perf top. See github issue #880 for more context. It could have been the same for random, except that random is performed using a consistent hash and it only considers a small set of servers (2 by default), so it may result in queueing at the backend despite having some free slots on unknown servers. It's no big deal though since random() only performs two attempts by default. For hashing algorithms this is pointless since we don't queue at the backend, except when there's no hash key found, which is the least of our concerns here. |
||
---|---|---|
.github | ||
contrib | ||
doc | ||
examples | ||
include | ||
reg-tests | ||
scripts | ||
src | ||
tests | ||
.cirrus.yml | ||
.gitattributes | ||
.gitignore | ||
.travis.yml | ||
BRANCHES | ||
CHANGELOG | ||
CONTRIBUTING | ||
INSTALL | ||
LICENSE | ||
MAINTAINERS | ||
Makefile | ||
README | ||
ROADMAP | ||
SUBVERS | ||
VERDATE | ||
VERSION |
The HAProxy documentation has been split into a number of different files for ease of use. Please refer to the following files depending on what you're looking for : - INSTALL for instructions on how to build and install HAProxy - BRANCHES to understand the project's life cycle and what version to use - LICENSE for the project's license - CONTRIBUTING for the process to follow to submit contributions The more detailed documentation is located into the doc/ directory : - doc/intro.txt for a quick introduction on HAProxy - doc/configuration.txt for the configuration's reference manual - doc/lua.txt for the Lua's reference manual - doc/SPOE.txt for how to use the SPOE engine - doc/network-namespaces.txt for how to use network namespaces under Linux - doc/management.txt for the management guide - doc/regression-testing.txt for how to use the regression testing suite - doc/peers.txt for the peers protocol reference - doc/coding-style.txt for how to adopt HAProxy's coding style - doc/internals for developer-specific documentation (not all up to date)