We discovered a BIND (version 9.6.1-P1 and 9.7.0-P1) performance
regression under high load in our tests. BIND acts as a forwarder
and client sends requests at constant 3k/sec rate. The number of
processed requests decreases over time, from 3k/sec to less than
2k/sec in 5 minutes.

I debugged the issue and it is caused by ADB hash table from
lib/dns/adb.c file. The table has fixed size defined by:

> #define NBUCKETS 1009 /*%< how many buckets for
names/addrs */

With 3k requests per second the table gets full and this results
into constant collisions. Setting the NBUCKETS define to a higher
value fixes the problem and BIND handles 3k requests per second
fine.

Can this be a problem for a busy BIND server in a real-world
deployment? Or we are hitting this because the test setup is just
too "unrealistic" and BIND resolver is not designed to handle
3,000 unique queries/second?