Hi! Some of our Openstack users run quite large number of dnsmasq instances on single host. They started hitting default limit of inotify socket number on single system after upgrade to more recent version. System defaults of sysctl fs.inotify.max_user_instances is 128. They reached limit of 116 dnsmasq instances, then more instances failed to start.
I was surprised they have any use case for such high number of instances. They use one dnsmasq for one virtual network. I found simple way to avoid hitting low system limit. They do not use resolv.conf for name server configuration or any dhcp hosts or options directory. Created inotify socket is never used in that case. Simple patch attached. I know we can raise inotify system limit. I think better is to not waste resources that are left unused. -- Petr Menšík Software Engineer Red Hat, http://www.redhat.com/ email: pemen...@redhat.com PGP: 65C6C973
From 3b24702b3526db27bc81985b57326765fc2d3cf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemen...@redhat.com> Date: Wed, 1 Nov 2017 13:25:56 +0100 Subject: [PATCH] Open inotify socket only when it would be used. Skips its opening if --no-resolv is given and --hostsdir nor --dhcp-*dir= are not used. --- src/dnsmasq.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dnsmasq.c b/src/dnsmasq.c index 7d65cd0..db3ff5a 100644 --- a/src/dnsmasq.c +++ b/src/dnsmasq.c @@ -360,7 +360,8 @@ int main (int argc, char **argv) } #ifdef HAVE_INOTIFY - if (daemon->port != 0 || daemon->dhcp || daemon->doing_dhcp6) + if ((daemon->port != 0 || daemon->dhcp || daemon->doing_dhcp6) + && (!option_bool(OPT_NO_RESOLV) || daemon->dynamic_dirs)) inotify_dnsmasq_init(); else daemon->inotifyfd = -1; -- 2.9.5
_______________________________________________ Dnsmasq-discuss mailing list Dnsmasqemail@example.com http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss