Batas Ukuran / etc / hosts (Linux)

11

Adakah yang tahu batas ukuran teoritis dari / etc / hosts pada sistem Linux sebelum Anda mulai melihat penurunan kinerja?

Selain itu, adakah yang bisa mengarahkan saya ke sumber resmi yang menyatakan batas yang diharapkan?

MikeP90
sumber
8
Ini membuat saya berpikir Anda melakukan sesuatu yang gila atau CARA di luar praktik terbaik. Apa detailnya?
ewwhite
3
Tentu sepertinya menyebarkan resolver DNS ringan mungkin menjadi solusi yang lebih baik di sini.
Zoredache
1
Saya memiliki pelanggan yang meminta ini. Saya berharap menemukan beberapa dokumentasi yang bisa saya tunjukkan kepada mereka mengapa ini akan menyebabkan masalah; alih-alih harus mencobanya pada mesin uji dan menunjukkannya.
MikeP90
1
File hosts adalah peninggalan masa pra-DNS tahun 1970-an dan awal 1980-an. Memiliki ratusan entri dalam file host dikenali sebagai ide buruk yang jauh ke belakang . Jika Anda memiliki lebih dari 10 entri di Anda, Anda mungkin berada di jalur yang salah.
Michael Hampton

Jawaban:

9

Gunakan sumbernya , Mike.

Penyelesai menggunakan pencarian linear melalui file teks untuk menemukan entri. Ini adalah database tanpa indeks. Jadi, dengan tidak adanya kemampuan caching tambahan, biaya untuk pencarian akan menjadi O (n). Mengenai kapan hal itu akan mengakibatkan penurunan kinerja, itu pertanyaan mustahil untuk dijawab - semakin lambat setiap catatan.

Jika Anda berbicara dengan programmer database atau admin Anda akan mendapatkan angka yang berbeda untuk titik di mana pencarian indeks (O (log2 (n)) lebih murah daripada pemindaian tabel penuh, tetapi umumnya jawabannya akan berada di wilayah 20 hingga 100 catatan.

Sistem linux apa pun yang perlu menyelesaikan banyak nama (bukan hanya nama host). Harus menjalankan nscd atau serupa. Kebanyakan cache seperti itu akan mengindeks data sendiri yang akan membatalkan pertanyaan kinerja, namun ...

Ini tidak menyediakan sarana untuk mengelola kumpulan data yang besar / kompleks - jika Anda memiliki host dengan lebih dari satu alamat IP, pencarian melalui file host akan selalu mengembalikan entri pertama.

symcbean
sumber
1
Untuk menutup loop, kami menambahkan 1,7 juta catatan ke file host dan memperkirakan bahwa itu menambahkan 0,5 detik untuk setiap pencarian. Dalam lingkungan ini, 0,5 detik dapat diabaikan. Saya pikir server DNS masih merupakan solusi yang lebih baik, tetapi pelanggan menginginkan apa yang diinginkan pelanggan.
MikeP90
5

Sedikit sejarah Internet - sebelum DNS digunakan pada tahun 1984, file host adalah satu-satunya untuk menyelesaikan nama, dan tidak ada banyak host di jaringan - 325 pada Februari 1983 (RFC 847) . Ada salinan HOSTS.TXT (tidak dapat dibaca mesin, dari tahun 1982) di arsip maillist sejarah internet . Bahkan ada HOSTS alternatif. TXT (Geoff Goodfellow's) .

sendmoreinfo
sumber
3

Secara teknis, tidak ada batas atas. Namun, setiap pencarian DNS akan mengenai file ini, jadi mengapa membiarkan diri Anda terbuka untuk itu?

Untuk apa nilainya, /etc/hostsfile terbesar yang saya distribusikan di lingkungan saya adalah 1.200 baris. Dan itu bekerja dengan baik untuk aplikasi yang saya kelola. DNS bukan opsi di lingkungan tertentu itu.

putih
sumber
Mari kita bicara dengan cara lain. Jika tidak ada pengindeksan di kernel, setiap klik akan melakukan pencarian linear yang akan tergantung pada ukuran cache sejauh waktu berjalan.
Pemburu Rusa
4
Saya menggunakan file host populer yang ditemukan di internet, ada 15.430 baris dan saya perhatikan tidak ada penurunan nyata dalam kinerja web surfing.
Bert
@DeerHunter Saya tidak berpikir ada sesuatu di kernel Unix yang melakukan pencarian hostname.
Barmar
+1 untuk catatan Bert. Saya hanya menggunakan file khusus dengan 22.000 baris dan tidak memengaruhi kinerja. Ini berguna untuk tujuan pengujian!
Josh koenig