Làm thế nào để đo hiệu quả bộ nhớ cache DNS / các mục được lưu trong bộ nhớ cache?


16

Tôi đã cấu hình dnsmasqnhư một máy chủ DNS chỉ lưu trong bộ nhớ cache trên máy chủ Debian và nó hoạt động tốt (Tôi đang thấy thời gian phản hồi DNS được cải thiện thông qua đào).

Tuy nhiên, tôi muốn hiểu dnsmasqbộ nhớ đệm bất cứ lúc nào, để tôi có thể bắt đầu suy nghĩ về hiệu quả (tức là tỷ lệ trúng) mà tôi đạt được.

Tôi đã xem qua các trang man và web và không thể tìm thấy cách tôi xem dnsmasqbộ nhớ đệm ở bất kỳ điểm nào (không giống như bạn có thể làm cho các hợp đồng thuê, ví dụ, được lưu trong tệp dnsmasq.lease).

dnsmasqbộ đệm DNS chỉ được giữ trong bộ nhớ? Hoặc tôi phải làm một số tập tin đăng nhập munging?

Câu trả lời:


22

Tôi không có quyền truy cập dnsmasqnhưng theo chủ đề này có tiêu đề: dnsmasq có phải là bộ nhớ đệm không? bạn có thể gửi tín hiệu USR1 đến dnsmasqquy trình, khiến nó đổ các số liệu thống kê vào nhật ký hệ thống.

$ sudo pkill -USR1 dnsmasq

Sau đó tham khảo nhật ký hệ thống:

$ 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

LƯU Ý: Tôi tin rằng dnsmasqvẫn giữ bộ nhớ cache trong RAM.

Vì vậy, nếu bạn muốn xóa bộ nhớ cache, bạn sẽ cần bật công -qtắc khi dnsmasqđược gọi. Điều này được đề cập trong dnsmasqtrang người đàn ông:

   -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
Cảm ơn, điều đó dường như hoạt động và tạo ra đầu ra tương tự như: ngày 20 tháng 10 08:39:17 dnsmasq [4846]: thời gian 1413790757 ngày 20 tháng 10 sử dụng các mục bộ nhớ cache chưa hết hạn. 20 tháng 10 08:39:17 dnsmasq [4846]: các truy vấn được chuyển tiếp 13376, các truy vấn được trả lời cục bộ 1326 Vì vậy, tôi đoán tổng số lần truy cập bộ nhớ cache là: 1326/14702, khoảng 9%. Tôi càng để nó chạy lâu hơn và càng nhiều trang web của cùng một trang web tôi truy cập, tôi đoán điều đó có thể leo lên.
binaryfrost

Trên các bộ định tuyến dựa trên OpenWRT sử dụng logread | tail.
Brian

1
@binaryfrost bất kỳ ý tưởng sử dụng onmemory cho mỗi địa chỉ dns được lưu trữ? giả sử nếu tôi có 500.000 kích thước bộ đệm sẽ ghi lại đầy đủ bao nhiêu bộ nhớ dự kiến ​​sẽ được sử dụng?
satch_boogie

Các hệ thống sử dụng systemd không có / var / log / syslog và tôi không thể tìm thấy bất kỳ mục nào cho dnsmasq sau khi phát hành SIGUSR1 trong journalctlđầu ra. Có cách nào để xác định rõ ràng nơi dnsmasq nên đổ hồ sơ không?
Sergiy Kolodyazhnyy

2

Một cách khác để có được thông tin này từ trang người đàn ông:

Các thống kê bộ đệm cũng có sẵn trong DNS dưới dạng câu trả lời cho các truy vấn của lớp CHAOS và nhập TXT trong liên kết miền. Các tên miền là cachesize.bind, insertions.bind, evictions.bind, miss.bind, hit.bind, auth.bind và server.bind. Một lệnh ví dụ để truy vấn điều này, sử dụng tiện ích đào sẽ là

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

Nếu bạn có một cái gì đó giống như giải quyết systemd trên hệ thống của mình thì bạn sẽ cần truy vấn trực tiếp máy chủ bằng:

   dig +short chaos txt hits.bind @serverIP
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.