Кто-нибудь знает, каков теоретический предел размера / etc / hosts в системе Linux, прежде чем вы начнете замечать снижение производительности?
Кроме того, может ли кто-нибудь указать мне на какой-то официальный источник, в котором указан ожидаемый предел?
Использовать источник, Майк.
Сопоставитель использует линейный поиск по текстовому файлу для поиска записей. Это база данных без индексов. Таким образом, при отсутствии возможности дополнительного кэширования стоимость поиска будет O (n). Что касается того, когда это приведет к снижению производительности, на этот вопрос невозможно ответить - с каждой записью он становится все медленнее.
Если вы поговорите с программистом или администратором базы данных, вы получите разные цифры для точки, в которой поиск по индексу (O (log2 (n)) дешевле, чем полное сканирование таблицы, но обычно ответ будет в районе 20 до 100 записей.
Любая система Linux, требующая разрешения множества имен (а не только имен хостов). Должен быть запущен nscd или аналогичный. Большинство таких кешей сами индексируют данные, что, однако, сводит на нет вопрос о производительности ...
Он не предоставляет средств для управления сложными / большими наборами данных - если у вас есть хост с более чем одним IP-адресом, поиск через файл hosts всегда будет возвращать первую запись.
Немного из истории Интернета - до того, как DNS был развернут в 1984 году, файл hosts был единственным для разрешения имен, а в сети было не так много хостов - 325 в феврале 1983 года. (RFC 847). Существуют копии HOSTS.TXT (не считываемые компьютером) 1982 года в архив интернет-истории рассылки. Был даже альтернативный HOSTS.TXT (Джефф Гудфеллоу).
Технически верхнего предела нет. Однако каждый запрос DNS будет попадать в этот файл, так зачем же оставлять себя открытым для этого?
Чего стоит, самый большой /etc/hosts
файл, который я распространял в своих средах, состоял из 1200 строк. И это хорошо сработало для приложения, которым я управлял. DNS не подходил для этой конкретной среды.