Límite de tamaño de / etc / hosts (Linux)

11

¿Alguien sabe cuál es el límite de tamaño teórico de / etc / hosts en un sistema Linux antes de que pueda comenzar a ver una degradación en el rendimiento?

Además, ¿alguien puede señalarme alguna fuente oficial que indique cuál es el límite esperado?

MikeP90
fuente
8
Esto me hace pensar que estás haciendo algo loco o MUCHO fuera de las mejores prácticas. ¿Cuáles son los detalles?
ewwhite
3
Claro que parece que implementar una resolución de DNS ligera podría ser una mejor solución aquí.
Zoredache
1
Tengo un cliente que solicita esto. Tenía la esperanza de encontrar alguna documentación que pudiera mostrarles por qué esto causará problemas; en lugar de tener que probarlo en una máquina de prueba y demostrarlo.
MikeP90
1
El archivo hosts es una reliquia de los días anteriores al DNS de los años setenta y principios de los ochenta. Tener cientos de entradas en un archivo de hosts fue reconocido como una mala idea desde hace mucho tiempo . Si tiene más de 10 entradas en la suya, probablemente esté en el camino equivocado.
Michael Hampton

Respuestas:

9

Usa la fuente , Mike.

El solucionador utiliza una búsqueda lineal a través del archivo de texto para localizar entradas. Es una base de datos sin índices. Entonces, en ausencia de capacidad de almacenamiento en caché adicional, el costo de las búsquedas será O (n). En cuanto a cuándo eso dará como resultado una degradación en el rendimiento, esa es una pregunta imposible de responder: se vuelve más lenta con cada registro.

Si habla con un programador o administrador de la base de datos, obtendrá diferentes cifras para el punto en el que una búsqueda de índice (O (log2 (n)) es más barata que un escaneo completo de la tabla, pero generalmente la respuesta estará en la región de 20 a 100 registros.

Cualquier sistema Linux que necesite resolver muchos nombres (no solo nombres de host). Debería estar ejecutando nscd o similar. Sin embargo, la mayoría de estos cachés indexarán datos, lo que anularía la pregunta de rendimiento ...

No proporciona medios para administrar conjuntos de datos complejos / grandes: si tiene un host con más de una dirección IP, las búsquedas a través del archivo de hosts siempre devolverán la primera entrada.

symcbean
fuente
1
Para cerrar el ciclo, agregamos 1.7 millones de registros al archivo de hosts y hemos estimado que agregó .5 segundos a cada búsqueda. En este entorno, 0,5 segundos es insignificante. Creo que un servidor DNS sigue siendo una mejor solución, pero el cliente quiere lo que quiere.
MikeP90
5

Un poco de historia de Internet: antes de que se implementara DNS en 1984, el archivo de hosts era el único para resolver nombres, y no había muchos hosts en la red: 325 en febrero de 1983 (RFC 847) . Hay copias de HOSTS.TXT (no legibles por máquina) de 1982 en el archivo de la lista de correo de Internet . Incluso hubo un HOSTS.TXT alternativo (Geoff Goodfellow's) .

sendmoreinfo
fuente
3

Técnicamente, no hay límite superior. Sin embargo, cada búsqueda de DNS golpeará este archivo, entonces, ¿por qué dejarlo abierto a eso?

Por lo que vale, el /etc/hostsarchivo más grande que he distribuido en mis entornos fue de 1.200 líneas. Y eso funcionó bien para la aplicación que estaba administrando. DNS no era una opción en ese entorno particular.

ewwhite
fuente
Digámoslo de otra manera. Si no hay indexación en el núcleo, cada hit haría una búsqueda lineal que dependerá del tamaño de la caché en lo que respecta al tiempo.
Deer Hunter
44
Utilizo un archivo de hosts popular que se encuentra en Internet, hay 15.430 líneas y no noto una degradación real en el rendimiento de la navegación web.
Bert
@DeerHunter No creo que haya nada en el núcleo de Unix que realice la búsqueda de nombres de host.
Barmar
+1 a la nota de Bert. Acabo de usar un archivo personalizado con 22,000 líneas y no ha afectado el rendimiento. ¡Esto es útil para fines de prueba!
Josh koenig