This variable will report the maximum number of simultaneous tcp clients
that BIND has served while running.
It can be verified by running rndc status, then inspect "tcp high-water:
count", or by generating statistics file, rndc stats, then inspect the
line with "TCP connection high-water" text.
The tcp-highwater variable is atomically updated based on an existing
tcp-quota system handled in ns/client.c.
(cherry picked from commit
66fe8627de2c8488b7808c7b342e6ceb51f65414)
isc_quota_getmax(&server->sctx->tcpquota));
CHECK(putstr(text, line));
+ snprintf(line, sizeof(line), "TCP high-water: %u\n",
+ (unsigned)ns_stats_get_counter(server->sctx->nsstats,
+ ns_statscounter_tcphighwater));
+ CHECK(putstr(text, line));
+
if (server->reload_in_progress) {
CHECK(putstr(text, "reload/reconfig in progress"));
}
SET_NSSTATDESC(invalidsig, "requests with invalid signature",
"ReqBadSIG");
SET_NSSTATDESC(requesttcp, "TCP requests received", "ReqTCP");
+ SET_NSSTATDESC(tcphighwater, "TCP connection high-water",
+ "TCPConnHighWater");
SET_NSSTATDESC(authrej, "auth queries rejected", "AuthQryRej");
SET_NSSTATDESC(recurserej, "recursive queries rejected", "RecQryRej");
SET_NSSTATDESC(xfrrej, "transfer requests rejected", "XfrRej");
"QryUsedStale");
SET_NSSTATDESC(prefetch, "queries triggered prefetch", "Prefetch");
SET_NSSTATDESC(keytagopt, "Keytag option received", "KeyTagOpt");
+
INSIST(i == ns_statscounter_max);
/* Initialize resolver statistics */
isc_result_t result;
CTRACE("accept");
-
/*
* Set up a new TCP connection. This means try to attach to the
* TCP client quota (tcp-clients), but fail if we're over quota.
RUNTIME_CHECK(result == ISC_R_SUCCESS);
}
+ /* TCP high-water stats update. */
+ unsigned int curr_tcpquota = isc_quota_getused(&client->sctx->tcpquota);
+ ns_stats_update_if_greater(client->sctx->nsstats,
+ ns_statscounter_tcphighwater,
+ curr_tcpquota);
+
/*
* If this client was set up using get_client() or get_worker(),
* then TCP is already marked active. However, if it was restarted
ns_statscounter_prefetch = 63,
ns_statscounter_keytagopt = 64,
- ns_statscounter_max = 65
+ ns_statscounter_tcphighwater = 65,
+
+ ns_statscounter_max = 66,
};
void