mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-11 03:31:36 +00:00
MINOR: Add srv_conn_free sample fetch
This adds the 'srv_conn_free([<backend>/]<server>)' sample fetch. This fetch provides the number of available connections on the designated server.
This commit is contained in:
parent
4cdf3abaa0
commit
155e93e570
@ -13690,7 +13690,8 @@ be_conn_free([<backend>]) : integer
|
||||
servers are also not included, unless all other servers are down. If no
|
||||
backend name is specified, the current one is used. But it is also possible
|
||||
to check another backend. It can be used to use a specific farm when the
|
||||
nominal one is full. See also the "be_conn" and "connslots" criteria.
|
||||
nominal one is full. See also the "be_conn", "connslots", and "srv_conn_free"
|
||||
criteria.
|
||||
|
||||
OTHER CAVEATS AND NOTES: if any of the server maxconn, or maxqueue is 0
|
||||
(meaning unlimited), then this fetch clearly does not make sense, in which
|
||||
@ -13908,8 +13909,20 @@ srv_conn([<backend>/]<server>) : integer
|
||||
evaluated. If <backend> is omitted, then the server is looked up in the
|
||||
current backend. It can be used to use a specific farm when one server is
|
||||
full, or to inform the server about our view of the number of active
|
||||
connections with it. See also the "fe_conn", "be_conn" and "queue" fetch
|
||||
methods.
|
||||
connections with it. See also the "fe_conn", "be_conn", "queue", and
|
||||
"srv_conn_free" fetch methods.
|
||||
|
||||
srv_conn_free([<backend>/]<server>) : integer
|
||||
Returns an integer value corresponding to the number of available connections
|
||||
on the designated server, possibly including the connection being evaluated.
|
||||
The value does not include queue slots. If <backend> is omitted, then the
|
||||
server is looked up in the current backend. It can be used to use a specific
|
||||
farm when one server is full, or to inform the server about our view of the
|
||||
number of active connections with it. See also the "be_conn_free" and
|
||||
"srv_conn" fetch methods.
|
||||
|
||||
OTHER CAVEATS AND NOTES: If the server maxconn is 0, then this fetch clearly
|
||||
does not make sense, in which case the value returned will be -1.
|
||||
|
||||
srv_is_up([<backend>/]<server>) : boolean
|
||||
Returns true when the designated server is UP, and false when it is either
|
||||
|
@ -1886,6 +1886,33 @@ smp_fetch_srv_conn(const struct arg *args, struct sample *smp, const char *kw, v
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* set temp integer to the number of available connections on the server in the backend.
|
||||
* Accepts exactly 1 argument. Argument is a server, other types will lead to
|
||||
* undefined behaviour.
|
||||
*/
|
||||
static int
|
||||
smp_fetch_srv_conn_free(const struct arg *args, struct sample *smp, const char *kw, void *private)
|
||||
{
|
||||
unsigned int maxconn;
|
||||
|
||||
smp->flags = SMP_F_VOL_TEST;
|
||||
smp->data.type = SMP_T_SINT;
|
||||
|
||||
if (args->data.srv->maxconn == 0) {
|
||||
/* one active server is unlimited, return -1 */
|
||||
smp->data.u.sint = -1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
maxconn = srv_dynamic_maxconn(args->data.srv);
|
||||
if (maxconn > args->data.srv->cur_sess)
|
||||
smp->data.u.sint = maxconn - args->data.srv->cur_sess;
|
||||
else
|
||||
smp->data.u.sint = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* set temp integer to the number of connections pending in the server's queue.
|
||||
* Accepts exactly 1 argument. Argument is a server, other types will lead to
|
||||
* undefined behaviour.
|
||||
@ -1945,6 +1972,7 @@ static struct sample_fetch_kw_list smp_kws = {ILH, {
|
||||
{ "nbsrv", smp_fetch_nbsrv, ARG1(1,BE), NULL, SMP_T_SINT, SMP_USE_INTRN, },
|
||||
{ "queue", smp_fetch_queue_size, ARG1(1,BE), NULL, SMP_T_SINT, SMP_USE_INTRN, },
|
||||
{ "srv_conn", smp_fetch_srv_conn, ARG1(1,SRV), NULL, SMP_T_SINT, SMP_USE_INTRN, },
|
||||
{ "srv_conn_free", smp_fetch_srv_conn_free, ARG1(1,SRV), NULL, SMP_T_SINT, SMP_USE_INTRN, },
|
||||
{ "srv_id", smp_fetch_srv_id, 0, NULL, SMP_T_SINT, SMP_USE_SERVR, },
|
||||
{ "srv_is_up", smp_fetch_srv_is_up, ARG1(1,SRV), NULL, SMP_T_BOOL, SMP_USE_INTRN, },
|
||||
{ "srv_queue", smp_fetch_srv_queue, ARG1(1,SRV), NULL, SMP_T_SINT, SMP_USE_INTRN, },
|
||||
|
Loading…
Reference in New Issue
Block a user