MINOR: sample: Add bc_rtt and bc_rttvar
This Patch adds fetch samples for backends round trip time.
This commit is contained in:
parent
c05d30e9d8
commit
5529c9985e
|
@ -19642,6 +19642,22 @@ be_name : string
|
|||
frontends with responses to check which backend processed the request. It can
|
||||
also be used in a tcp-check or an http-check ruleset.
|
||||
|
||||
bc_rtt(<unit>) : integer
|
||||
Returns the Round Trip Time (RTT) measured by the kernel for the backend
|
||||
connection. <unit> is facultative, by default the unit is milliseconds. <unit>
|
||||
can be set to "ms" for milliseconds or "us" for microseconds. If the server
|
||||
connection is not established, if the connection is not TCP or if the
|
||||
operating system does not support TCP_INFO, for example Linux kernels before
|
||||
2.4, the sample fetch fails.
|
||||
|
||||
bc_rttvar(<unit>) : integer
|
||||
Returns the Round Trip Time (RTT) variance measured by the kernel for the
|
||||
backend connection. <unit> is facultative, by default the unit is milliseconds.
|
||||
<unit> can be set to "ms" for milliseconds or "us" for microseconds. If the
|
||||
server connection is not established, if the connection is not TCP or if the
|
||||
operating system does not support TCP_INFO, for example Linux kernels before
|
||||
2.4, the sample fetch fails.
|
||||
|
||||
be_server_timeout : integer
|
||||
Returns the configuration value in millisecond for the server timeout of the
|
||||
current backend. This timeout can be overwritten by a "set-timeout" rule. See
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
varnishtest "Test declaration of TCP rtt fetches"
|
||||
|
||||
# feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(v2.8-dev8)'"
|
||||
feature ignore_unknown_macro
|
||||
|
||||
server s1 {
|
||||
rxreq
|
||||
txresp
|
||||
} -start
|
||||
|
||||
haproxy h1 -conf {
|
||||
defaults common
|
||||
mode http
|
||||
timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
|
||||
timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
|
||||
timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
|
||||
|
||||
frontend fe from common
|
||||
bind "fd@${feh1}"
|
||||
|
||||
default_backend be
|
||||
|
||||
backend be from common
|
||||
|
||||
http-response set-header x-test1 "%[fc_rtt]"
|
||||
http-response set-header x-test2 "%[bc_rtt(us)]"
|
||||
http-response set-header x-test3 "%[fc_rttvar]"
|
||||
http-response set-header x-test4 "%[bc_rttvar]"
|
||||
|
||||
server s1 ${s1_addr}:${s1_port}
|
||||
|
||||
} -start
|
||||
|
||||
client c1 -connect ${h1_feh1_sock} {
|
||||
txreq -req GET -url /
|
||||
rxresp
|
||||
expect resp.status == 200
|
||||
expect resp.http.x-test2 ~ "[0-9]+"
|
||||
} -run
|
|
@ -401,6 +401,35 @@ smp_fetch_fc_rttvar(const struct arg *args, struct sample *smp, const char *kw,
|
|||
return 1;
|
||||
}
|
||||
|
||||
/* get the mean rtt of a backend connection */
|
||||
static int
|
||||
smp_fetch_bc_rtt(const struct arg *args, struct sample *smp, const char *kw, void *private)
|
||||
{
|
||||
if (!get_tcp_info(args, smp, 1, 0))
|
||||
return 0;
|
||||
|
||||
/* By default or if explicitly specified, convert rtt to ms */
|
||||
if (!args || args[0].type == ARGT_STOP || args[0].data.sint == TIME_UNIT_MS)
|
||||
smp->data.u.sint = (smp->data.u.sint + 500) / 1000;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* get the variance of the mean rtt of a backend connection */
|
||||
static int
|
||||
smp_fetch_bc_rttvar(const struct arg *args, struct sample *smp, const char *kw, void *private)
|
||||
{
|
||||
if (!get_tcp_info(args, smp, 1, 1))
|
||||
return 0;
|
||||
|
||||
/* By default or if explicitly specified, convert rttvar to ms */
|
||||
if (!args || args[0].type == ARGT_STOP || args[0].data.sint == TIME_UNIT_MS)
|
||||
smp->data.u.sint = (smp->data.u.sint + 500) / 1000;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
|
||||
/* get the unacked counter on a client connection */
|
||||
static int
|
||||
|
@ -497,6 +526,9 @@ static struct sample_fetch_kw_list sample_fetch_keywords = {ILH, {
|
|||
#ifdef TCP_INFO
|
||||
{ "fc_rtt", smp_fetch_fc_rtt, ARG1(0,STR), val_fc_time_value, SMP_T_SINT, SMP_USE_L4CLI },
|
||||
{ "fc_rttvar", smp_fetch_fc_rttvar, ARG1(0,STR), val_fc_time_value, SMP_T_SINT, SMP_USE_L4CLI },
|
||||
{ "bc_rtt", smp_fetch_bc_rtt, ARG1(0,STR), val_fc_time_value, SMP_T_SINT, SMP_USE_L4CLI },
|
||||
{ "bc_rttvar", smp_fetch_bc_rttvar, ARG1(0,STR), val_fc_time_value, SMP_T_SINT, SMP_USE_L4CLI },
|
||||
|
||||
#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
|
||||
{ "fc_unacked", smp_fetch_fc_unacked, ARG1(0,STR), var_fc_counter, SMP_T_SINT, SMP_USE_L4CLI },
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue