Bagaimana mengukur efisiensi cache DNS / item dalam cache?

16

Saya telah mengonfigurasi dnsmasqsebagai server DNS khusus caching di server Debian, dan ini berfungsi dengan baik (Saya melihat waktu respons DNS yang ditingkatkan melalui penggalian).

Namun, saya ingin memahami apa dnsmasqitu caching pada satu waktu, sehingga saya dapat mulai berpikir tentang efisiensi (yaitu hit rate) yang saya capai.

Saya telah melihat-lihat halaman manual, dan web, dan tidak dapat menemukan bagaimana saya melihat apa yang dnsmasqada pada caching pada titik mana pun (tidak seperti yang dapat Anda lakukan untuk leasing misalnya, yang disimpan dalam file dnsmasq.silakan).

Apakah dnsmasqcache DNS hanya disimpan di memori? Atau apakah saya harus melakukan beberapa file log hijau?

binaryfrost
sumber

Jawaban:

22

Saya tidak memiliki akses ke dnsmasqtetapi menurut utas ini berjudul: dnsmasq apakah itu caching? Anda dapat mengirim sinyal USR1 ke dnsmasqproses, menyebabkannya membuang statistik ke log sistem.

$ sudo pkill -USR1 dnsmasq

Kemudian lihat log sistem:

$ 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

CATATAN: Saya percaya bahwa dnsmasqmenyimpan cache dalam RAM.

Jadi, jika Anda ingin membuang cache, Anda harus mengaktifkan -qsakelar ketika dnsmasqdipanggil. Ini disebutkan di dnsmasqhalaman manual:

   -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
sumber
1
Terima kasih, itu sepertinya berhasil, dan menghasilkan keluaran yang serupa dengan: 20 Okt 08:39:17 dnsmasq [4846]: waktu 1413790757 20 Oktober 08:39:17 dnsmasq [4846]: ukuran cache 4096, 0/59976 penyisipan cache kembali menggunakan entri cache yang tidak kedaluwarsa. 20 Okt 08:39:17 dnsmasq [4846]: kueri diteruskan 13376, kueri dijawab secara lokal 1326 Jadi saya kira total entri entri cache adalah: 1326/14702 yaitu sekitar 9%. Semakin lama saya membiarkannya berjalan dan semakin banyak situs dari situs yang sama yang saya kunjungi, saya rasa itu akan merayap naik.
binaryfrost
Pada penggunaan router berbasis OpenWRT logread | tail.
Brian
1
@ binaryfrost ide penggunaan memori per alamat dns cache? katakanlah jika saya memiliki ukuran cache 500.000 akan penuh mencatat berapa banyak memori yang diharapkan akan digunakan?
satch_boogie
Sistem yang menggunakan systemd tidak memiliki / var / log / syslog, dan saya tidak dapat menemukan entri untuk dnsmasq setelah mengeluarkan SIGUSR1 dalam journalctloutput. Apakah ada cara untuk secara eksplisit menentukan di mana dnsmasq harus membuang catatan?
Sergiy Kolodyazhnyy
2

Cara lain untuk mendapatkan info ini dari halaman manual:

Statistik cache juga tersedia di DNS sebagai jawaban untuk pertanyaan dari CHAOS kelas dan ketik TXT dalam ikatan domain. Nama domain adalah cachesize.bind, insertions.bind, evictions.bind, misses.bind, hits.bind, auth.bind dan servers.bind. Contoh perintah untuk menanyakan ini, menggunakan utilitas penggalian

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

Jika Anda memiliki sesuatu seperti systemd-resol pada sistem Anda, maka Anda harus menanyakan server secara langsung dengan:

   dig +short chaos txt hits.bind @serverIP
NeroP
sumber