"Počet otevřených souborů jedním procesem je ale také omezený, takže limit počtu rekurzivních dotazů není možné zvýšit na víc než přibližně 4500." - to je holt tak když je někdo líný si zjistit jak se ten maximální počet otevřených souborů jedním procesem dá zvýšit, Google najde spoustu dokumentace jako například http://stackoverflow.com/questions/3734932/max-open-files-for-working-process
Pro naslouchání máte 65 535 portů, na kterých můžete čekat příchozí spojení, (navíc pro každou IP adresu zvlášť, takže s více IP adresami tento limit lez zvýšit). Sestavená spojení ale takto omezena nejsou, protože kromě lokálního portu jsou ještě identifikována vzdálenou adresou a vzdáleným portem.
Nebyl líný, zjistil a nastavil, ale stejně nepomohlo. I při zvýšení limitu na 8000 se počet současně probíhajících rekurzivních dotazů zastavil pod hodnotou 4500 a server začal nahodile odmítat nové dotazy. Nemusí tedy nutně jít jen o limit počtu otevřených souborů, ale třeba i o to, jak BIND vnitřně funguje.
Budiž, pak to není lenost ale jen trestuhodná nedůslednost - proč jste tedy ten limit 4500 v článku tak přímočaře svedl na limit počtu otevřených souborů jedním procesem? Měřil jste vůbec kolik měl proces nameserveru ve skutečnosti otevřených filedescriptorů? Hint: ls -1 /proc/<pid>/fd | wc -l
Máte pravdu, mohlo to být formulováno lépe, omlouvám se.
Faktem je, že při prostém zvýšení limitů v konfiguraci BINDA se logy začaly plnit zprávami o vyčerpaném počtu otevřených souborů. Po zvýšení limitu počtu otevřených souborů takové zprávy zmizely, podle logů k žádné chybě nedocházelo, nicméně BIND náhodně vracel SERVFAIL pro legitimní dotazy. Připadalo mi to příliš komplikované na vysvětlení v daném místě článku, proto jsem se uchýlil ke zkratce.