Since upgrading to BIND 9.9 I'm seeing "maximum number of FD events (64) received"
  • 06 Jun 2019
  • 1 Minute To Read
  • Contributors
  • Print
  • Share
  • Dark
    Light

Since upgrading to BIND 9.9 I'm seeing "maximum number of FD events (64) received"

  • Print
  • Share
  • Dark
    Light

BIND 9.9.x is EOL
As of July 2018, the BIND 9 version described in this article is End of Life. Please visit https://www.isc.org/downloads/ to download a currently supported version, or contact us at https://www.isc.org/contact/ with questions.

Question:

Since upgrading to BIND 9.9, I'm now seeing maximum number of FD events (64) received being logged frequently - why is this, and what should I do about it?

Answer:

An explanation of this logged message can be found in the article What does 'maximum number of FD events ... received' mean?

However, BIND 9.9.0 introduced multiple UDP listeners to improve performance, which means that in a multi-threaded BIND installation, there are effectively more sockets being monitored for client-side queries. If you are also listening on multiple interfaces (real or virtual), this might mean that # interfaces x # UDP listeners exceeds 64. The outcome of this is that on a busy server (particularly a busy recursive server that is also opening connections to make iterative queries of authoritative servers), the default number of FD events is already too small. (Future versions of BIND may increase this default.)

To prevent this message from being logged constantly, you can increase the default number of events when you build BIND. See What does 'maximum number of FD events ... received' mean? for information on how to do this.

Another way to reduce the frequency of these messages is to reduce the number of UDP listeners when starting named, particularly if running on a server that has a large number of CPUs (actual or virtual). This is achieved using the new -U option. For example:

named -U 8
Tuning considerations for multiple UDP listeners on BIND 9.9
When the number of CPUs is very large (32 or more), the increase in UDP listeners may not provide any performance improvement and might actually reduce throughput slightly due to the overhead of the additional structures and tasks. We suggest trying different values of -U to find the optimal one for your production environment.
Tuning considerations when migrating to BIND 9.9 with multiple server sockets configured
Some production environments may already have increased server throughput for serving clients by adding additional interfaces (virtual or real). In that situation, the new 9.9 multi-threaded I/O is serving the same purpose. It would be worth considering whether multiple interfaces are needed any longer - particularly where they are virtual-only.