/ Etc / hosts'in Boyut Sınırı (Linux)


11

Performansta bozulmayı görmeye başlamadan önce / etc / hostların teorik boyut sınırının Linux sisteminde ne olduğunu bilen var mı?

Ayrıca, kimse beni beklenen sınırın ne olduğunu belirten resmi bir kaynağa yönlendirebilir mi?


8
Bu beni en iyi uygulamaların dışında çılgınca veya WAY yaptığınızı düşündürüyor. Detaylar nedir?
ewwhite

3
Elbette, hafif bir DNS çözümleyiciyi dağıtmak burada daha iyi bir çözüm olabilir gibi görünüyor.
Zoredache

1
Bunu isteyen bir müşterim var. Bunun neden sorunlara neden olacağını onlara gösterebileceğim bazı belgeler bulmayı umuyordum; test makinesinde denemek ve göstermek yerine.
MikeP90

1
Hosts dosyası, 1970'lerin ve 1980'lerin başında DNS öncesi günlerin bir kalıntısıdır. Bir hosts dosyasında yüzlerce girişe sahip olmak o kadar kötü bir fikir olarak kabul edildi . Sizinkinde 10'dan fazla giriş varsa, büyük olasılıkla yanlış yoldasınız demektir.
Michael Hampton

Yanıtlar:


9

Kaynağı kullan , Mike.

Çözümleyici, girişleri bulmak için metin dosyası içinde doğrusal bir arama kullanır. Dizini olmayan bir veritabanı. Dolayısıyla, ilave önbellekleme özelliğinin yokluğunda, aramaların maliyeti O (n) olacaktır. Bunun performansta bir düşüşe neden olacağı konusunda, cevaplanması imkansız bir soru - her kayıtta yavaşlar.

Bir veritabanı programcısı veya yöneticisiyle konuşursanız, bir dizin aramasının (O (log2 (n)) tam tablo taramasından daha ucuz olduğu nokta için farklı rakamlar alırsınız, ancak genellikle yanıt 20 bölgesinde olacaktır. 100 kayda kadar.

Çok sayıda ismi çözmesi gereken herhangi bir linux sistemi (sadece hostnames değil). Nscd veya benzeri bir şekilde çalışıyor olmalıdır. Bu tür önbelleklerin çoğu, performans sorusunu geçersiz kılacak olan verileri dizine ekler, ancak ...

Karmaşık / büyük veri kümelerini yönetmek için herhangi bir araç sağlamaz - birden fazla IP adresi olan bir ana makineniz varsa, hosts dosyası üzerinden yapılan aramalar her zaman ilk girişi döndürür.


1
Döngüyü kapatmak için hosts dosyasına 1,7 milyon kayıt ekledik ve her aramaya 0,5 saniye eklediğini tahmin ettik. Bu ortamda .5 saniye önemsizdir. Bir DNS sunucusunun hala daha iyi bir çözüm olduğunu düşünüyorum, ancak müşteri müşterinin istediklerini istiyor.
MikeP90


3

Teknik olarak, üst sınır yoktur. Ancak, her DNS araması bu dosyaya vuracaktır, neden kendinizi buna açık bırakın?

Değeri için, /etc/hostsortamlarımda dağıttığım en büyük dosya 1.200 satırdı. Ve bu benim yönettiğim uygulama için iyi çalıştı. DNS, söz konusu ortamda bir seçenek değildi.


Hadi başka bir yol açalım. Çekirdekte indeksleme yoksa, her isabet zamanlama kadar önbellek boyutuna bağlı olan doğrusal bir arama yapar.
Deer Hunter

4
İnternette bulunan popüler bir ana bilgisayar dosyası kullanıyorum, 15.430 satır var ve web sörf performansında gerçek bir düşüş görmüyorum.
Bert

@DeerHunter Unix çekirdeğinde hostname araması yapan bir şey olduğunu sanmıyorum.
Barmar

Bert'in notuna +1. Sadece 22.000 satırlı özel bir dosya kullandım ve performansı etkilemedi. Bu test amaçları için kullanışlıdır!
Josh koenig
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.