Як виміряти ефективність кешу DNS / кешовані елементи?


16

Я налаштований dnsmasqяк кешування DNS-сервера на сервері Debian, і він працює добре (я бачу покращені часи відповіді DNS за допомогою dig).

Однак я хотів би зрозуміти, що dnsmasqтаке кешування в будь-який час, щоб я міг почати думати про ефективність (тобто швидкість потрапляння), яку я досягаю.

Я переглянув сторінки man і веб-сайтів, і не можу знайти, як я бачу, що dnsmasqкешується в будь-який момент (на відміну від цього, наприклад, для оренди, які зберігаються у файлі dnsmasq.lease).

Чи dnsmasqкеш DNS зберігається лише в пам'яті? Або я повинен зробити якийсь файл журналу?

Відповіді:


22

Я не маю доступу до dnsmasqцього потоку під назвою: dnsmasq це кешування? ви можете відправити сигнал USR1 в dnsmasqпроцес, викликаючи його скидання статистики в системний журнал.

$ sudo pkill -USR1 dnsmasq

Потім зверніться до системних журналів:

$ 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

ПРИМІТКА. Я вважаю, що він dnsmasqзберігає кеш-пам'ять в оперативній пам'яті.

Отже, якщо ви хочете скинути кеш, вам потрібно буде включити -qкомутатор при dnsmasqвиклику. Про це йдеться на dnsmasqсторінці чоловіка:

   -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
Дякуємо, що, здається, працює і дає результат, подібний до: 20 жовтня 08:39:17 dnsmasq [4846]: час 1413790757 20 жовтня 08:39:17 dnsmasq [4846]: розмір кешу 4096, 0/59976 вставки кеша повторно використані незавершені записи кеша. 20 жовтня 08:39:17 dnsmasq [4846]: надіслані запити 13376, відповіді на запити локально 1326. Тож я думаю, загальна кількість показів кешу: 1326/14702, що становить приблизно 9%. Чим довше я залишаю його запущеним, і тим більше сайтів тих же сайтів, які я відвідую, я думаю, що це може повзати.
бінарний мороз

На маршрутизаторах, що базуються на OpenWRT, використовується logread | tail.
Брайан

1
@binaryfrost будь-яка ідея про використання пам’яті за кешовану адресу dns? скажемо, якщо у мене розмір кеша в 500 000 заповнить записи, скільки пам'яті очікується використовувати?
satch_boogie

Системи, які використовують systemd, не мають / var / log / syslog, і я не можу знайти жодних записів для dnsmasq після видачі SIGUSR1 у journalctlвисновку. Чи є спосіб явно вказати, де dnsmasq повинен скидати записи?
Сергій Колодяжний

2

Ще один спосіб отримати цю інформацію зі сторінки man:

Статистика кешу також доступна в DNS як відповіді на запити класу CHAOS та типу TXT у доменній прив'язці. Доменні імена - це cachesize.bind, insertions.bind, evictions.bind, misses.bind, hits.bind, auth.bind та servers.bind. Приклад команди для запиту цього за допомогою утиліти dig

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

Якщо у вашій системі є щось на зразок системного вирішення, вам потрібно буде безпосередньо запитувати сервер за допомогою:

   dig +short chaos txt hits.bind @serverIP
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.