performance regression under high load

Dmitry Kurochkin dmitry.kurochkin at measurement-factory.com
Tue Apr 20 15:02:42 UTC 2010


Hello.

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?

Do you think it is a good idea to make the NBUCKETS value
tunable?

Regards,
   Dmitry



More information about the bind-users mailing list