解決策 1:
ソースを使用してください、マイク。
リゾルバは、テキスト ファイルを線形検索してエントリを見つけます。インデックスのないデータベースです。したがって、追加のキャッシング機能がない場合、ルックアップのコストは O(n) になります。それがいつパフォーマンスの低下につながるかについては、答えるのが不可能な質問です。すべてのレコードで遅くなります。
データベース プログラマーまたは管理者と話すと、インデックス ルックアップ (O(log2(n))) が完全なテーブル スキャンよりも安くなる点について異なる数字が得られますが、一般的に答えは 20 の領域になります。 100 レコードまで。
多くの名前 (ホスト名だけでなく) を解決する必要がある Linux システム。 nscd などを実行している必要があります。そのようなキャッシュのほとんどはデータ自体をインデックス化するため、パフォーマンスの問題は無効になりますが...
複雑で大規模なデータセットを管理する手段はありません。複数の IP アドレスを持つホストがある場合、hosts ファイルを介した検索では常に最初のエントリが返されます。
解決策 2:
ちょっとしたインターネットの歴史 -- 1984 年に DNS が展開される前は、ホスト ファイルは名前を解決するためだけのものであり、ネットワーク上には多くのホストがありませんでした -- 1983 年 2 月には 325 (RFC 847)。 Internet-history メーリング リストのアーカイブに、1982 年からの HOSTS.TXT (ただし、機械可読ではありません) のコピーがあります。代替の HOSTS.TXT (Geoff Goodfellow のもの) さえありました。
解決策 3:
技術的には、上限はありません。ただし、すべての DNS ルックアップはこのファイルにヒットするので、なぜそれを気にしておく必要があるのでしょうか?
価値があるのは、最大の /etc/hosts
私の環境で配布したファイルは 1,200 行でした。そして、それは私が管理していたアプリケーションではうまくいきました. DNS は、その特定の環境ではオプションではありませんでした。