Größenbeschränkung von / etc / hosts (Linux)

11

Weiß jemand zufällig, wie hoch die theoretische Größenbeschränkung von / etc / hosts auf einem Linux-System ist, bevor Sie möglicherweise Leistungseinbußen feststellen?

Kann mich jemand auf eine offizielle Quelle hinweisen, in der die erwartete Grenze angegeben ist?

MikeP90
quelle
8
Dies lässt mich denken, dass Sie etwas Verrücktes oder WEGES außerhalb von Best Practices tun. Was sind die Details?
ewwhite
3
Sicher scheint die Bereitstellung eines leichten DNS-Resolvers hier eine bessere Lösung zu sein.
Zoredache
1
Ich habe einen Kunden, der dies anfordert. Ich hatte gehofft, eine Dokumentation zu finden, die mir zeigen konnte, warum dies zu Problemen führen wird. anstatt es auf einem Testgerät ausprobieren und demonstrieren zu müssen.
MikeP90
1
Die Hosts-Datei ist ein Relikt der Vor-DNS-Tage der 1970er und frühen 1980er Jahre. Mit Hunderten von Einträgen in einer Host - Datei wurde als schlechte Idee anerkannt , dass weit zurück . Wenn Sie mehr als 10 Einträge in Ihrem haben, sind Sie wahrscheinlich auf dem falschen Weg.
Michael Hampton

Antworten:

9

Benutze die Quelle , Mike.

Der Resolver verwendet eine lineare Suche in der Textdatei, um Einträge zu finden. Es ist eine Datenbank ohne Indizes. Wenn keine zusätzliche Caching-Funktion vorhanden ist, betragen die Kosten für Suchvorgänge O (n). Wann dies zu einer Verschlechterung der Leistung führt, ist eine unmöglich zu beantwortende Frage - sie wird mit jedem Datensatz langsamer.

Wenn Sie mit einem Datenbankprogrammierer oder Administrator sprechen, erhalten Sie unterschiedliche Zahlen für den Punkt, an dem eine Indexsuche (O (log2 (n)) billiger ist als ein vollständiger Tabellenscan, aber im Allgemeinen liegt die Antwort im Bereich von 20 auf 100 Datensätze.

Jedes Linux-System, das viele Namen auflösen muss (nicht nur Hostnamen). Sollte nscd oder ähnliches ausführen. Die meisten dieser Caches indizieren Daten selbst, wodurch die Leistungsfrage jedoch ungültig wird ...

Es bietet keine Möglichkeit zum Verwalten komplexer / großer Datenmengen. Wenn Sie einen Host mit mehr als einer IP-Adresse haben, geben Suchvorgänge über die Hosts-Datei immer den ersten Eintrag zurück.

symcbean
quelle
1
Um die Schleife zu schließen, haben wir der Hosts-Datei 1,7 Millionen Datensätze hinzugefügt und geschätzt, dass jeder Suche 0,5 Sekunden hinzugefügt wurden. In dieser Umgebung sind 0,5 Sekunden vernachlässigbar. Ich denke, ein DNS-Server ist immer noch eine bessere Lösung, aber der Kunde möchte, was der Kunde möchte.
MikeP90
5

Ein bisschen Internet-Verlauf - bevor DNS 1984 bereitgestellt wurde, war die Hosts-Datei die einzige, die Namen auflöste, und es gab nicht viele Hosts im Netzwerk - 325 im Februar 1983 (RFC 847) . Es gibt Kopien von HOSTS.TXT (allerdings nicht maschinenlesbar) aus dem Jahr 1982 im Archiv der Internet-Geschichte . Es gab sogar einen alternativen HOSTS.TXT (Geoff Goodfellow's) .

sendmoreinfo
quelle
3

Technisch gibt es keine Obergrenze. Jede DNS-Suche wird diese Datei jedoch treffen. Warum sollten Sie sich dafür offen lassen?

Für das, was es wert ist, war die größte /etc/hostsDatei, die ich in meinen Umgebungen verteilt habe, 1.200 Zeilen. Und das funktionierte gut für die Anwendung, die ich verwaltete. DNS war in dieser speziellen Umgebung keine Option.

ewwhite
quelle
Sagen wir es anders. Wenn es keine Indizierung im Kernel gibt, führt jeder Treffer eine lineare Suche durch, die vom Timing des Caches abhängt.
Deer Hunter
4
Ich verwende eine beliebte Hosts-Datei im Internet, es gibt 15.430 Zeilen und ich bemerke keine wirkliche Verschlechterung der Leistung beim Surfen im Internet.
Bert
@DeerHunter Ich glaube nicht, dass es irgendetwas im Unix-Kernel gibt, das die Suche nach Hostnamen durchführt.
Barmar
+1 zu Berts Notiz. Ich habe gerade eine benutzerdefinierte Datei mit 22.000 Zeilen verwendet, die die Leistung nicht beeinträchtigt hat. Dies ist nützlich zu Testzwecken!
Josh Koenig