Domain-Name-System
BIND dns 高性能記憶體
我在用於解析大量域的小型伺服器上執行綁定,我的主要目標是快速解析域和低記憶體使用量。
我想在所有 TLD 的名稱伺服器中使用類似本地區域的東西
dig . axfr @g.root-servers.net.
現在發生的事情是當記憶體限制被命中時,bind 停止記憶體並且每次解析根伺服器 dns 都會被命中。有什麼方法可以使用
axfr
輸出並告訴 bind 從那裡獲取 tld 的 NS 資訊?我試圖添加“。” 具有 axfr 輸出的主區域,但它不起作用。
zone "." IN { type master; file "axfrOutput.ca"; };
目前命名的.conf
options { listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; }; max-cache-size 100m; cleaning-interval 1; // clean cache every 1 minutes max-cache-ttl 120; // limit cached record to a 60s TTL max-ncache-ttl 120; // limit cache neg. resp. to a 60s TTL recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; zone "." IN { type hint; file "named.ca"; };
高性能和低記憶體使用+短記憶體時間是相互矛盾的要求。
但是,達到限制時應該發生的事情
max-cache-size
是它應該開始(過早地)從記憶體(LRU)中逐出條目。強制更短的 TTL (
max-cache-ttl
) 會犧牲性能以加快收斂速度。(可能是個壞主意,因為這會丟棄經常使用的東西,否則會在 LRU 方案中具有高優先級。)
cleaning-interval
已過時,在現代 BIND 版本中無效。如果您有非常高的負載並且想要專門優化對根區域的查詢,您可以擁有自己的從屬區域,
.
而不是普通的提示區域。ICANN 提供AXFR 對根區域以及其他一些區域的訪問權限。