DNS önbellek verimliliği / önbellek öğeleri nasıl ölçülür?


16

dnsmasqBir Debian sunucusunda yalnızca önbelleğe alma DNS sunucusu olarak yapılandırıldım ve iyi çalışıyor (kazma yoluyla gelişmiş DNS yanıt sürelerini görüyorum).

Ancak, dnsmasqherhangi bir zamanda neyin önbelleklendiğini anlamak istiyorum , böylece elde ettiğim verimlilik (yani isabet oranı) hakkında düşünmeye başlayabilirim.

Ben adam sayfaları ve web etrafında bir göz vardı ve dnsmasq(herhangi bir noktada önbellekleme ne görüyorum nasıl bulamıyorum (aksine bir dnsmasq.lease dosyasında tutulur kiralama için yapabileceğiniz gibi).

Is dnsmasqDNS önbellek sadece bellekte tutulan? Yoksa bazı günlük dosyası munging yapmak zorunda mıyım?

Yanıtlar:


22

Erişim yok dnsmasqama bu konuya göre: dnsmasq bu önbellek mi? USR1 sinyalini dnsmasqişleme göndererek, sistem günlüğüne istatistik dökülmesine neden olabilirsiniz.

$ sudo pkill -USR1 dnsmasq

Ardından sistem günlüklerine bakın:

$ sudo tail /var/log/syslog
Jan 21 13:37:57 dnsmasq[29469]: time 1232566677
Jan 21 13:37:57 dnsmasq[29469]: cache size 150, 0/475 cache insertions re-used unexpired cache entries.
Jan 21 13:37:57 dnsmasq[29469]: queries forwarded 392, queries answered locally 16
Jan 21 13:37:57 dnsmasq[29469]: server 208.67.222.222#53: queries sent 206, retried or failed 12
Jan 21 13:37:57 dnsmasq[29469]: server 208.67.220.220#53: queries sent 210, retried or failed 6

NOT:dnsmasq RAM önbelleğini koruduğuna inanıyorum .

Bu nedenle, önbelleği boşaltmak istiyorsanız , çağrıldığında -qanahtarı etkinleştirmeniz gerekir dnsmasq. Bu, kılavuz dnsmasqsayfasında belirtilmiştir :

   -d, --no-daemon
        Debug mode: don't fork to the background, don't write a pid file, 
        don't change user id, generate a complete cache dump  on
        receipt on SIGUSR1, log to stderr as well as syslog, don't fork new 
        processes to handle TCP queries. Note that this option is for use in 
        debugging only, to stop dnsmasq daemonising in production, use -k.

   -q, --log-queries
        Log the results of DNS queries handled by dnsmasq. Enable a full 
        cache dump on receipt of SIGUSR1.

1
Teşekkürler, bu işe yarıyor gibi görünüyor ve benzer çıktı üretir: 20 Ekim 08:39:17 dnsmasq [4846]: zaman 1413790757 20 Ekim 08:39:17 dnsmasq [4846]: önbellek boyutu 4096, 0/59976 önbellek eklemeler yeniden süresi dolmamış önbellek girdileri kullandı. Ekim 20 08:39:17 dnsmasq [4846]: sorgular 13376 iletildi, sorgular yerel olarak cevaplandı 1326 Yani toplam önbellek giriş isabetlerinin toplamı: yaklaşık% 9 olan 1326/14702. Ne kadar uzun süre çalışır bırakın ve aynı sitelerin daha fazla site ziyaret, sanırım bu sürünebilir.
binaryfrost

OpenWRT tabanlı yönlendiricilerde kullanın logread | tail.
Brian

1
@binaryfrost önbelleğe alınan dns adresi başına bellek kullanımı hakkında herhangi bir fikir var mı? Diyelim ki 500.000 önbellek boyutum varsa, ne kadar bellek kullanılması bekleniyor?
satch_boogie

Systemd kullanan sistemlerde / var / log / syslog yoktur ve journalctlçıktıda SIGUSR1 verdikten sonra dnsmasq için herhangi bir girdi bulamıyorum . Dnsmasq'ın kayıtları nereye dökeceğini açıkça belirtmenin bir yolu var mı?
Sergiy Kolodyazhnyy

2

Bu bilgiyi man sayfasından almanın başka bir yolu:

Önbellek istatistikleri, DNS'de etki alanı bağlamada CHAOS sınıfı ve TXT türü sorgulara yanıt olarak da kullanılabilir. Alan adları cachesize.bind, insertions.bind, evictions.bind, misses.bind, hits.bind, auth.bind ve servers.bind şeklindedir. Dig yardımcı programını kullanarak bunu sorgulamak için örnek bir komut

   dig +short chaos txt cachesize.bind
   dig +short chaos txt hits.bind
   dig +short chaos txt misses.bind

Sisteminizde systemd-resol gibi bir şey varsa, sunucuyu doğrudan aşağıdakilerle sorgulamanız gerekir:

   dig +short chaos txt hits.bind @serverIP
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.