Limit rozmiaru / etc / hosts (Linux)

11

Czy ktoś zdarza się wiedzieć, jaki jest teoretyczny limit rozmiaru / etc / hosts w systemie Linux, zanim zaczniesz zauważać spadek wydajności?

Ponadto, czy ktoś może skierować mnie w stronę oficjalnego źródła, które określa, jaki jest oczekiwany limit?

MikeP90
źródło
8
To sprawia, że ​​myślę, że robisz coś szalonego lub nie stosujesz najlepszych praktyk. Jakie są szczegóły?
ewwhite
3
Pewnie wydaje się, że wdrożenie lekkiego resolvera DNS może być lepszym rozwiązaniem.
Zoredache,
1
Mam klienta, który tego żąda. Miałem nadzieję znaleźć dokumentację, w której mógłbym im pokazać, dlaczego spowoduje to problemy; zamiast próbować go na maszynie testowej i demonstrować.
MikeP90,
1
Plik hosts jest reliktem czasów sprzed DNS z lat 70. i wczesnych 80. Posiadanie setek wpisów w pliku hosts zostało już dawno uznane za zły pomysł . Jeśli masz więcej niż 10 wpisów, prawdopodobnie jesteś na złym tropie.
Michael Hampton

Odpowiedzi:

9

Skorzystaj ze źródła , Mike.

Program tłumaczący używa wyszukiwania liniowego w pliku tekstowym w celu zlokalizowania pozycji. To baza danych bez indeksów. Zatem przy braku dodatkowej funkcji buforowania koszt wyszukiwania będzie wynosił O (n). To, kiedy doprowadzi to do pogorszenia wydajności, na to pytanie nie można odpowiedzieć - staje się wolniejsze z każdą płytą.

Jeśli porozmawiasz z programistą lub administratorem bazy danych, otrzymasz różne liczby dla punktu, w którym wyszukiwanie indeksu (O (log2 (n)) jest tańsze niż skanowanie pełnej tabeli, ale ogólnie odpowiedź będzie w zakresie 20 do 100 rekordów.

Każdy system linuxowy, który musi rozwiązać wiele nazw (nie tylko nazwy hostów). Powinien być uruchomiony nscd lub podobny. Większość takich pamięci podręcznych samodzielnie indeksuje dane, co unieważnia pytanie dotyczące wydajności, jednak ...

Nie zapewnia możliwości zarządzania złożonymi / dużymi zestawami danych - jeśli masz hosta z więcej niż jednym adresem IP, wyszukiwania w pliku hosts zawsze zwracają pierwszy wpis.

symcbean
źródło
1
Aby zamknąć pętlę, dodaliśmy 1,7 miliona rekordów do pliku hosts i oszacowaliśmy, że dodało to 0,5 sekundy do każdego wyszukiwania. W tym środowisku 0,5 sekundy jest nieistotne. Myślę, że serwer DNS jest nadal lepszym rozwiązaniem, ale klient chce tego, czego chce.
MikeP90
5

Trochę historii Internetu - zanim DNS został wdrożony w 1984 r., Plik hosts był jedynym rozwiązaniem nazw, a w sieci nie było wielu hostów - 325 w lutym 1983 r. (RFC 847) . Istnieją kopie HOSTS.TXT (jednak nie do odczytu maszynowego) z 1982 r. W archiwum maillisty historii Internetu . Był nawet alternatywny HOSTS.TXT (Geoff Goodfellow's) .

sendmoreinfo
źródło
3

Technicznie nie ma górnej granicy. Jednak każde wyszukiwanie DNS trafi do tego pliku, więc po co pozostawić się otwartym na to?

Największy /etc/hostsplik, jaki dystrybuowałem w moich środowiskach, miał wartość 1200 linii. I to działało dobrze w zarządzanej przeze mnie aplikacji. DNS nie był opcją w tym konkretnym środowisku.

ewwhite
źródło
Ujmijmy to inaczej. Jeśli w jądrze nie ma indeksowania, każde trafienie wykona liniowe wyszukiwanie, które będzie zależeć od wielkości pamięci podręcznej w miarę upływu czasu.
Deer Hunter,
4
Korzystam z popularnego pliku hosts znalezionego w Internecie, jest tam 15.430 linii i nie zauważam prawdziwego pogorszenia wydajności surfowania po Internecie.
Bert
@DeerHunter Nie sądzę, żeby w jądrze uniksowym było coś, co mogłoby wyszukiwać nazwy hostów.
Barmar
+1 do notatki Berta. Właśnie użyłem niestandardowego pliku zawierającego 22 000 wierszy i nie wpłynęło to na wydajność. Jest to przydatne do celów testowych!
Josh koenig