Jak zmierzyć wydajność pamięci podręcznej DNS / buforowane elementy?

16

Skonfigurowałem dnsmasqjako serwer DNS tylko do buforowania na serwerze Debian i działa dobrze (widzę lepsze czasy odpowiedzi DNS po wykopaniu).

Chciałbym jednak zrozumieć, czym dnsmasqjest buforowanie w dowolnym momencie, aby móc zacząć myśleć o wydajności (tj. Współczynniku trafień), którą osiągam.

dnsmasqPrzejrzałem strony podręcznika i strony internetowe i nie mogę znaleźć sposobu, w jaki widzę buforowanie w dowolnym momencie (inaczej niż na przykład w przypadku dzierżawy, które są przechowywane w pliku dnsmasq.lease).

Czy dnsmasqpamięć podręczna DNS jest przechowywana tylko w pamięci? Czy muszę wykonać munging pliku dziennika?

dwójkowy
źródło

Odpowiedzi:

22

Nie mam dostępu, dnsmasqale zgodnie z tym wątkiem zatytułowanym: dnsmasq to buforowanie? możesz wysłać sygnał USR1 do dnsmasqprocesu, powodując zrzucenie statystyk do dziennika systemowego.

$ sudo pkill -USR1 dnsmasq

Następnie przejrzyj dzienniki systemowe:

$ 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

UWAGA: Uważam, że dnsmasqzachowuje swoją pamięć podręczną w pamięci RAM.

Więc jeśli chcesz zrzucić pamięć podręczną, musisz włączyć -qprzełącznik po jej dnsmasqwywołaniu. Jest to wspomniane na dnsmasqstronie man:

   -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.
slm
źródło
1
Dzięki, wydaje się, że działa i daje wynik podobny do: 20 października 08:39:17 dnsmasq [4846]: czas 1413790757 20 października 08:39:17 dnsmasq [4846]: rozmiar pamięci podręcznej 4096, 0/59976 wstawienia pamięci podręcznej ponownie używane niewygasłe wpisy w pamięci podręcznej. 20 października 08:39:17 dnsmasq [4846]: zapytania przesłane 13376, zapytania odpowiedziały lokalnie 1326 Więc myślę, że całkowita liczba wpisów w pamięci podręcznej wynosi: 1326/14702, co stanowi około 9%. Im dłużej pozostawiam go uruchomionego i im więcej stron tych samych stron odwiedzam, myślę, że to może się przerazić.
binaryfrost
Na routerach opartych na OpenWRT używaj logread | tail.
Brian
1
@ binaryfrost jakiś pomysł wykorzystania pamięci na adres dns w pamięci podręcznej? powiedzmy, że jeśli mam 500 000 pamięci podręcznej, zapisze się pełna ilość pamięci, która ma być używana?
satch_boogie
Systemy używające systemd nie mają / var / log / syslog i nie mogę znaleźć żadnych wpisów dla dnsmasq po wydaniu SIGUSR1 w journalctldanych wyjściowych. Czy istnieje sposób, aby wyraźnie określić, gdzie dnsmasq powinien zrzucić zapisy?
Sergiy Kolodyazhnyy
2

Innym sposobem na uzyskanie tych informacji ze strony man:

Statystyki pamięci podręcznej są również dostępne w DNS jako odpowiedzi na zapytania klasy CHAOS i wpisz TXT w powiązaniu domeny. Nazwy domen to cachesize.bind, inserions.bind, evictions.bind, misses.bind, hits.bind, auth.bind i servers.bind. Przykładową komendą do wykonania tego zapytania byłoby użycie narzędzia dig

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

Jeśli masz w systemie coś takiego jak systemd-resolver, musisz bezpośrednio zapytać serwer:

   dig +short chaos txt hits.bind @serverIP
NeroP
źródło