Episode ini membahas tuning performa stack DNS: ukuran packet cache dan record cache, jumlah threads, cache-ttl dan negative-cache-ttl, tuning LMDB, serta observability modern dengan structured logging, OpenTelemetry tracing, endpoint Prometheus, dan webserver API stats.

DNS yang sehat harus diukur, bukan ditebak. Episode 19 menutup dua kebutuhan production sekaligus: membuat server DNS kalian cepat dan membuatnya terbaca — sehingga kalian tahu persis di mana beban berada dan apa yang terjadi saat performa menurun.
Bagian pertama membahas tuning: cache, threads, dan TTL. Bagian kedua membahas observability modern: structured logging, OpenTelemetry, Prometheus, dan statistik webserver yang dimiliki ketiga daemon PowerDNS.
Cache adalah pengganda performa terbesar di stack DNS. Recursor menyeimbangkan dua cache:
max-cache-entries: 2000000
packetcache-size: 500000
cache-ttl: 20
max-negative-ttl: 3600max-cache-entries mengatur ukuran record cache, packetcache-size untuk packet cache. Nilai di atas adalah titik awal untuk beban menengah — naikkan bertahap dan amati memori. cache-ttl dan max-negative-ttl mengendalikan berapa lama jawaban positif dan negatif bertahan.
Setiap perubahan harus terbukti:
rec_control get cache-hits
rec_control get cache-misses
dig @127.0.0.1 example.com A +noall +stats | grep 'Query time'Hit rate yang tinggi berarti sebagian besar query dijawab dari cache. Jika cache-hits rendah sementara cache-misses tinggi, ukuran cache terlalu kecil atau TTL terlalu pendek.
Recursor dan Authoritative memakai model threads. Menambah threads memakai lebih banyak CPU tapi meningkatkan paralelisme:
threads: 8
reuseport: truereuseport memungkinkan beberapa socket mendengarkan port yang sama, mendistribusikan beban ke seluruh CPU core.
Jika memakai backend lmdb untuk Authoritative, ukuran peta memori perlu disesuaikan:
lmdb-filename=/var/lib/powerdns/lmdb
lmdb-size=1073741824lmdb-size menentukan ukuran peta memori dalam byte. Setelah zone bertumbuh besar, monitor penggunaan dan perbesar sebelum penuh — LMDB yang penuh akan menolak operasi tulis.
PowerDNS Authoritative 5.1 memperkenalkan structured logging berformat JSON. Log seperti ini bisa dibaca mesin dan dianalisis otomatis:
sudo systemctl restart pdns
journalctl -u pdns -n 10 --no-pager | grep -i '"level"'Setiap baris log kini berupa objek JSON berisi level, pesan, dan field kontekstual. Ini mengubah log dari teks yang diurai manual menjadi data yang bisa di-query — fondasi observability modern.
Recursor 5.4 dan dnsdist 2.1 mendukung OpenTelemetry tracing: setiap query bisa dilacak lintas daemon, memberi gambaran end-to-end tentang di mana waktu hilang.
openTelemetry:
enabled: true
endpoint: otel-collector:4317Ketiga daemon mengekspos metrik Prometheus. dnsdist lewat webserver API:
webserver:
- address: 0.0.0.0:8083
apiKey: sekret-apiLalu scrape metriknya:
curl -s http://127.0.0.1:8083/api/v1/servers/localhost/statisticscurl .../statistics mengembalikan metrik seperti query per detik, cache hits, dan jumlah respon SERVFAIL dalam format JSON — siap digabung ke Grafana. rec_control get-all menyediakan metrik recursor serupa.
Dashboard DNS kalian minimal menampilkan metrik ini:
rec_control get-all > /tmp/rec-metrics.txt
dnsdist -c
showStats()
quit()Episode 19 membuat stack DNS kalian cepat dan terbaca: tuning cache, threads, dan LMDB yang terukur, structured logging berformat JSON, OpenTelemetry tracing, serta metrik Prometheus yang siap divisualisasikan.
Inti yang harus dibawa pulang:
max-cache-entries, packetcache-size, dan TTL adalah tuas tuning utama Recursor.reuseport menyebar beban ke seluruh core; lmdb-size mencegah database penuh.Di episode 20 selanjutnya kita akan membahas PowerDNS API dan automation IaC — REST API dengan API key untuk mengelola zone, records, TSIG, dan crypto keys, provisioning dengan curl dan Python, serta integrasi Terraform provider dan ExternalDNS di Kubernetes.