bind-users April 2010 archive
Main Archive Page > Month Archives  > bind-users archives
bind-users: performance regression under high load

performance regression under high load

From: Dmitry Kurochkin <dmitry.kurochkin_at_nospam>
Date: Tue Apr 20 2010 - 15:02:42 GMT


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

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

bind-users mailing list