------ HALoad ------ HAProxy's dummy HTTP client for benchmarks 1. Background ------------- HALoad is a lightweight, multi-threaded traffic generator designed to benchmark HTTP infrastructures under heavy loads. Built directly onto HAProxy's highly scalable core architecture, it shares its parent engine's efficient handling of connections. This framework allows the tool to generate high-volume traffic across all standard application layers, including HTTP/1, HTTP/2, and HTTP/3 (QUIC), over either cleartext or secured TLS connections. The primary design goal is to provide a modernized alternative to legacy tools like h1load, extending benchmarking capabilities to newer protocols. Notably, HALoad introduces the concept of users (-u), a feature completely absent from h1load. Here, a "user" strictly represents an independent, concurrent HTTP client task. Under this architecture, each simulated client will instantiate as many backend server connections as there are target URLs specified on the command line. HALoad does not require any configuration file. Instead, the configuration is dynamically derived from basic command line inputs. This ensures immediate usability for test operators while retaining the ability to test complex, multi-protocol setups. 2. Compilation -------------- The compilation process mirrors standard HAProxy builds, specifying "haload" as the compilation target via the command line: $ make -j $(nproc) TARGET=linux-glibc haload To enable encrypted communication layers (TLS/SSL): $ make TARGET=linux-glibc USE_OPENSSL=1 haload For advanced HTTP/3 over QUIC load testing: $ make -j $(nproc) TARGET=linux-glibc USE_OPENSSL=1 USE_QUIC=1 haload Because HALoad shares the code of the main HAProxy binary, it natively inherits all standard HAProxy compiler flags, optimizations, and build targets. 3. Execution ------------ HALoad displays its usage when run without argument or wrong arguments: Usage : haload [opts] [URL] where may be any combination of: -d