/etc/hosts 的大小限制(Linux)

/etc/hosts 的大小限制(Linux)

在开始看到性能下降之前,是否有人知道 Linux 系统上 /etc/hosts 的理论大小限制是多少?

此外,有人可以向我指出一些官方来源,说明预期的限制吗?

答案1

使用源,迈克。

解析器使用线性搜索文本文件来定位条目。这是一个没有索引的数据库。因此,在没有附加缓存功能的情况下,查找的成本将为 O(n)。至于何时会导致性能下降,这是一个无法回答的问题 - 每增加一条记录,它就会变慢。

如果您与数据库程序员或管理员交谈,您会得到不同的数字,表明索引查找(O(log2(n))比全表扫描更便宜,但通常答案会在 20 到 100 条记录的范围内。

任何需要解析大量名称(不仅仅是主机名)的 Linux 系统。应该运行 nscd 或类似程序。大多数此类缓存都会自行索引数据,这将消除性能问题……

它没有提供管理复杂/大型数据集的方法 - 如果您的主机有多个 IP 地址,则通过 hosts 文件进行查找将始终返回第一个条目。

答案2

互联网历史——在 1984 年部署 DNS 之前,hosts 文件是唯一用于解析名称的工具,网络上的主机数量并不多——1983 年 2 月时只有 325 个(RFC 847)。1982 年的 HOSTS.TXT 副本(虽然不是机器可读的)互联网历史邮件列表档案甚至还有一个替代的 HOSTS.TXT(杰夫·古德菲洛的)

答案3

从技术上讲,没有上限。但是,每次 DNS 查找都会访问此文件,所以为什么要让自己处于这种境地呢?

值得一提的是,/etc/hosts我在我的环境中分发的最大文件是 1,200 行。这对于我管理的应用程序来说效果很好。DNS 在该特定环境中不是一个选项。

相关内容