diff --git a/CHANGES b/CHANGES index 5d20dbea66..2e36700d07 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +6185. [func] Add "ClientQuota" statistics channel counter, which + indicates the number of the resolver's spilled queries + due to reaching the clients per query quota. [GL !7978] + 6184. [func] Special-case code that was added to allow GSS-TSIG to work around bugs in the Windows 2000 version of Active Directory has been removed. The 'nsupdate -o' diff --git a/bin/named/statschannel.c b/bin/named/statschannel.c index ce324f991d..bbb402262e 100644 --- a/bin/named/statschannel.c +++ b/bin/named/statschannel.c @@ -464,6 +464,8 @@ init_desc(void) { SET_RESSTATDESC(zonequota, "spilled due to zone quota", "ZoneQuota"); SET_RESSTATDESC(serverquota, "spilled due to server quota", "ServerQuota"); + SET_RESSTATDESC(clientquota, "spilled due to clients per query quota", + "ClientQuota"); SET_RESSTATDESC(nextitem, "waited for next item", "NextItem"); SET_RESSTATDESC(priming, "priming queries", "Priming"); diff --git a/doc/arm/reference.rst b/doc/arm/reference.rst index 62386a6106..54b054429d 100644 --- a/doc/arm/reference.rst +++ b/doc/arm/reference.rst @@ -7917,6 +7917,12 @@ Resolver Statistics Counters ``QuerySockFail`` This indicates the number of failures in opening query sockets. One common reason for such failures is due to a limitation on file descriptors. +``QueryCurUDP`` + This indicates the number of UDP queries in progress. + +``QueryCurTCP`` + This indicates the number of TCP queries in progress. + ``QueryTimeout`` This indicates the number of query timeouts. @@ -7947,6 +7953,48 @@ Resolver Statistics Counters ``QryRTTnn`` This provides a frequency table on query round-trip times (RTTs). Each ``nn`` specifies the corresponding frequency. In the sequence of ``nn_1``, ``nn_2``, ..., ``nn_m``, the value of ``nn_i`` is the number of queries whose RTTs are between ``nn_(i-1)`` (inclusive) and ``nn_i`` (exclusive) milliseconds. For the sake of convenience, we define ``nn_0`` to be 0. The last entry should be represented as ``nn_m+``, which means the number of queries whose RTTs are equal to or greater than ``nn_m`` milliseconds. +``NumFetch`` + This indicates the number of active fetches. + +``BucketSize`` + This indicates the number the resolver's internal buckets (a static number). + +``REFUSED`` + This indicates the number of REFUSED responses received. + +``ClientCookieOut`` + This indicates the number of COOKIE sent with client cookie only. + +``ServerCookieOut`` + This indicates the number of COOKIE sent with client and server cookie. + +``CookieIn`` + This indicates the number of COOKIE replies received. + +``CookieClientOk`` + This indicates the number of COOKIE client ok. + +``BadEDNSVersion`` + This indicates the number of bad EDNS version replies received. + +``BadCookieRcode`` + This indicates the number of bad cookie rcode replies received. + +``ZoneQuota`` + This indicates the number of queries spilled due to zone quota. + +``ServerQuota`` + This indicates the number of queries spilled due to server quota. + +``ClientQuota`` + This indicates the number of queries spilled due to clients per query quota. + +``NextItem`` + This indicates the number of waits for next item, when an invalid response is received. + +``Priming`` + This indicates the number of priming fetches performed by the resolver. + .. _socket_stats: Socket I/O Statistics Counters diff --git a/lib/dns/include/dns/stats.h b/lib/dns/include/dns/stats.h index 7b1b03e3a3..7a9f7143e2 100644 --- a/lib/dns/include/dns/stats.h +++ b/lib/dns/include/dns/stats.h @@ -71,9 +71,10 @@ enum { dns_resstatscounter_badcookie = 40, dns_resstatscounter_zonequota = 41, dns_resstatscounter_serverquota = 42, - dns_resstatscounter_nextitem = 43, - dns_resstatscounter_priming = 44, - dns_resstatscounter_max = 45, + dns_resstatscounter_clientquota = 43, + dns_resstatscounter_nextitem = 44, + dns_resstatscounter_priming = 45, + dns_resstatscounter_max = 46, /* * DNSSEC stats. diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index 3295b55a9a..ce0d7bc389 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -10399,6 +10399,7 @@ dns_resolver_createfetch(dns_resolver_t *res, const dns_name_t *name, fctx->spilled = true; } if (fctx->spilled) { + inc_stats(res, dns_resstatscounter_clientquota); result = DNS_R_DROP; goto unlock; }