isc_quota_getmax(&server->sctx->recursionquota));
CHECK(putstr(text, line));
+ snprintf(line, sizeof(line), "recursive high-water: %u\n",
+ (unsigned int)ns_stats_get_counter(
+ server->sctx->nsstats,
+ ns_statscounter_recurshighwater));
+ CHECK(putstr(text, line));
+
snprintf(line, sizeof(line), "tcp clients: %u/%u\n",
isc_quota_getused(&server->sctx->tcpquota),
isc_quota_getmax(&server->sctx->tcpquota));
SET_NSSTATDESC(updatebadprereq,
"updates rejected due to prerequisite failure",
"UpdateBadPrereq");
+ SET_NSSTATDESC(recurshighwater, "Recursive clients high-water",
+ "RecursHighwater");
SET_NSSTATDESC(recursclients, "recursing clients", "RecursClients");
SET_NSSTATDESC(dns64, "queries answered by DNS64", "DNS64");
SET_NSSTATDESC(ratedropped, "responses dropped for rate limits",
ns_statscounter_updatequota = 67,
- ns_statscounter_max = 68,
+ ns_statscounter_recurshighwater = 68,
+
+ ns_statscounter_max = 69,
};
void
static isc_result_t
recursionquotatype_attach(ns_client_t *client, bool soft_limit) {
+ isc_statscounter_t recurscount;
isc_result_t result;
result = isc_quota_acquire(&client->manager->sctx->recursionquota);
return (result);
}
- ns_stats_increment(client->manager->sctx->nsstats,
- ns_statscounter_recursclients);
+ recurscount = ns_stats_increment(client->manager->sctx->nsstats,
+ ns_statscounter_recursclients);
+
+ ns_stats_update_if_greater(client->manager->sctx->nsstats,
+ ns_statscounter_recurshighwater,
+ recurscount + 1);
return (result);
}