Limite dimensioni di / etc / hosts (Linux)


11

Qualcuno capisce qual è il limite teorico di dimensione di / etc / hosts su un sistema Linux prima che tu possa iniziare a vedere il degrado delle prestazioni?

Inoltre, qualcuno può indicarmi una fonte ufficiale che indica qual è il limite previsto?


8
Questo mi fa pensare che stai facendo qualcosa di folle o MODO al di fuori delle migliori pratiche. Quali sono i dettagli?
ewwhite,

3
Certo sembra che implementare un risolutore DNS leggero potrebbe essere una soluzione migliore qui.
Zoredache,

1
Ho un cliente che lo richiede. Speravo di trovare alcuni documenti che potessero mostrare loro perché questo causerebbe problemi; invece di doverlo provare su una macchina di prova e dimostrarlo.
MikeP90,

1
Il file hosts è una reliquia dei giorni pre-DNS degli anni '70 e dei primi anni '80. Avere centinaia di voci in un file hosts è stato riconosciuto come una cattiva idea molto tempo fa . Se hai più di 10 voci nelle tue, probabilmente sei sulla strada sbagliata.
Michael Hampton

Risposte:


9

Usa la fonte , Mike.

Il resolver utilizza una ricerca lineare attraverso il file di testo per individuare le voci. È un database senza indici. Pertanto, in assenza di funzionalità di memorizzazione nella cache aggiuntiva, il costo per le ricerche sarà O (n). Quanto a quando ciò comporterà un peggioramento delle prestazioni, questa è una domanda impossibile a cui rispondere - diventa più lento con ogni disco.

Se parli con un programmatore di database o un amministratore, otterrai cifre diverse per il punto in cui una ricerca dell'indice (O (log2 (n)) è più economica di una scansione completa della tabella, ma generalmente la risposta sarà nella regione di 20 a 100 record.

Qualsiasi sistema Linux che necessita di risolvere molti nomi (non solo nomi host). Dovrebbe essere in esecuzione nscd o simile. La maggior parte di tali cache indicizzerà i dati stessi che annullerebbero la domanda di prestazioni, tuttavia ...

Non fornisce alcun mezzo per la gestione di set di dati complessi / di grandi dimensioni: se si dispone di un host con più di un indirizzo IP, le ricerche tramite il file hosts restituiranno sempre la prima voce.


1
Per chiudere il ciclo, abbiamo aggiunto 1,7 milioni di record al file hosts e abbiamo stimato che ha aggiunto 0,5 secondi a ciascuna ricerca. In questo ambiente, 0,5 secondi è trascurabile. Penso che un server DNS sia ancora una soluzione migliore, ma il cliente desidera ciò che desidera.
MikeP90,


3

Tecnicamente, non c'è limite superiore. Tuttavia, ogni ricerca DNS colpirà questo file, quindi perché lasciarti aperto a questo?

Per quello che vale, il /etc/hostsfile più grande che ho distribuito nei miei ambienti era di 1.200 linee. E ha funzionato bene per l'applicazione che stavo gestendo. Il DNS non era un'opzione in quel particolare ambiente.


Mettiamola in un altro modo. Se non c'è indicizzazione nel kernel, ogni hit farebbe una ricerca lineare che dipenderà dalla dimensione della cache per quanto riguarda il tempo.
Deer Hunter,

4
Uso un popolare file hosts trovato su Internet, ci sono 15.430 righe e non noto alcun reale peggioramento delle prestazioni di navigazione.
Bert,

@DeerHunter Non credo ci sia nulla nel kernel Unix che esegua la ricerca del nome host.
Barmar

+1 alla nota di Bert. Ho appena usato un file personalizzato con 22.000 righe e non ha influito sulle prestazioni. Questo è utile a scopo di test!
Josh Koenig,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.