Mais conteúdo relacionado Semelhante a DNSキャッシュサーバ チューニングの勘所 (20) DNSキャッシュサーバ チューニングの勘所17. ワーカースレッド数に伴う
その他設定
• Unbound
• msg-cache-slabs / infra-cache-slabs / key-cache-slabs / infra-
cache-slabs
• スレッド数に近い「2のN乗」の値を設定するとよい
• スレッド数1∼2では2、スレッド数3∼4では4、5∼8では8を指
定
• キャッシュを構成するハッシュデータ構造のスラブ数を指定している。ワーカースレッドは、このデー
タ構造アクセス時に、スラブ毎にロックを獲得するため、スラブ数とワーカースレッド数と一致させ
るとロックコンテンションが減らせる。
• BIND9は、Unboundの上記設定に相当する項目無し
17
20. ユーザ通信用ソケットバッファ
サイズの設定
• Unbound
• so-rcvbuf: <バイト数> / so-sndbuf: <バイト数> (デフォルトはOSデ
フォルト値)
• OS側でソケットの最大バッファサイズが制限されていることがあるので、それも引き上
げる
• (Linux sysctl) net.core.rmem_max / net.core.wmem_max
• BIND9
• named.conf等では指定不可。
• ただし、OSの設定でデフォルトのソケットバッファサイズを指定可能なことがある
• (Linux sysctl) net.core.rmem_default / net.core.wmem_default
20
25. リクエスト処理状態
管理メモリサイズのモニタ
• Unbound
• unbound-control statsでスレッド毎・プロセス全体のリクエストリ
スト数(未解決の処理中リクエスト数)をモニタ可能。
• current.userが設定値に近づいていたり、exceededやoverwrittenが
カウントアップしているようなら、num-query-per-threadを引き上
げる。
thread0.requestlist.avg=0
thread0.requestlist.max=0
thread0.requestlist.overwritten=0
thread0.requestlist.exceeded=0
thread0.requestlist.current.all=0
thread0.requestlist.current.user=0
thread1.requestlist.avg=0
thread1.requestlist.max=0
thread1.requestlist.overwritten=0
thread1.requestlist.exceeded=0
thread1.requestlist.current.all=0
thread1.requestlist.current.user=0
total.requestlist.avg=0
total.requestlist.max=0
total.requestlist.overwritten=0
total.requestlist.exceeded=0
total.requestlist.current.all=0
total.requestlist.current.user=0
25
26. リクエスト処理状態
管理メモリサイズのモニタ
• BIND9
• rndc statusでrecursive clients数をモニタ可能。
> rndc status
CPUs found: 1
worker threads: 1
number of zones: 16
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 123/2900/3000
tcp clients: 0/100
server is up and running
warning: client xxx.xxx.xxx.xxx#xxxx: no more recursive
clients: quota reached (最大制限値超過時:新着リクエストは捨てられる)
!
• recursive clientが最大数を超えると以下の警告がsyslogに出る
現在値/ソフトリミット/最大制限値
recursive-clients soft limit exceeded, aborting oldest query
(ソフトリミット超過時:古いリクエストが捨てられる)
ソフトリミットは、
最大制限値が1000以下なら設定なし(0)、
それ以上の値なら「最大制限値-100」に設定さ
れる
26
28. 権威サーバ通信用ソケット最
大数の設定
• Unbound
• outgoing-range: <スレッドあたりのソケット数>
• デフォルト値: コンパイルオプションによって異なる
• BIND9
• (named起動時オプション) named -S <namedプロセス全体のソケット数>
• デフォルト値: 4096
• OS側のハード・ソフトリミットの引き上げ
• Unbound/BIND9ともに、root権限で起動するとulimitを自動的に引き上げ
てくれる。手動で引き上げたい時は、unbound/namedを起動するスクリプ
ト中でulimitコマンドを実行 ulimit -HSn 100000
28
31. キャッシュメモリサイズの
設定
• Unbound
• rrset-cache-size: <RRsetキャッシュサイズ> (デフォルト 4m)
• msg-cache-size: <メッセージキャッシュサイズ> (デフォルト 4m)
• BIND9
• max-cache-size: <キャッシュサイズ> (デフォルト 制限無し)
• OS側のハード・ソフトリミットの引き上げ(必要に応じ)
• OS側でもプロセスあたりの使用メモリ量のリミットが設定されている場合が
あるので、unbound/named起動スクリプトでulimitで引き上げる(制限無し
にする)必要があるかもしれない ulimit -HSd unlimited
ulimit -HSm unlimited
ulimit -HSv unlimited
31
38. FWセッション数チューニングの
例 (Linux Netfilter)
最大コネクション数 net.netfilter.nf_conntrack_max
現在のコネクション数 net.netfilter.nf_conntrack_count
UDPコネクションの維持時間 net.netfilter.nf_conntrack_udp_timeout
NetfilterステートフルFW (iptables -m state)に関係するsysctl項目
コネクションが上限に達すると、以下のカーネルメッセージが出力さ
れるので注意
ip_conntrack: maximum limit of xxxxxx entries exceeded
ip_conntrack: table full, dropping packet
Netfilterの最大コネクション数は、nf_conntrakモジュールロード時
の設定オプションで指定するとよい (RHEL6の設定例)
options nf_conntrack hashsize=32768
/etc/modprobe.d/nf_conntrack.conf hashsize 8の値が最大コネクション数
(nf_conntrack_max)として設定される
例では32768 8 = 262144コネクション
38
44. minimal-responses
• DNS応答のauthority section/additional section
を(DNSプロトコル上許される範囲で)省略する機能
$ dig www.kernel.org
!
;; QUESTION SECTION:
;www.kernel.org. IN A
!
;; ANSWER SECTION:
www.kernel.org. 600 IN CNAME pub.all.kernel.org.
pub.all.kernel.org. 600 IN A 198.145.20.140
pub.all.kernel.org. 600 IN A 149.20.4.69
pub.all.kernel.org. 600 IN A 199.204.44.194
!
;; AUTHORITY SECTION:
kernel.org. 86400 IN NS ns0.kernel.org.
kernel.org. 86400 IN NS ns1.kernel.org.
kernel.org. 86400 IN NS ns2.kernel.org.
!
;; ADDITIONAL SECTION:
ns0.kernel.org. 86400 IN A 198.145.19.196
ns1.kernel.org. 86400 IN A 149.20.20.144
ns1.kernel.org. 86400 IN AAAA 2001:4f8:8:10::1:1
ns2.kernel.org. 86400 IN A 149.20.4.80
ns2.kernel.org. 86400 IN AAAA 2001:4f8:1:10::1:1
!
;; MSG SIZE rcvd: 260
$ dig www.kernel.org
!
;; QUESTION SECTION:
;www.kernel.org. IN A
!
;; ANSWER SECTION:
www.kernel.org. 600 IN CNAME pub.all.kernel.org.
pub.all.kernel.org. 600 IN A 199.204.44.194
pub.all.kernel.org. 600 IN A 198.145.20.140
pub.all.kernel.org. 600 IN A 149.20.4.69
!
;; MSG SIZE rcvd: 102
min-res: no min-res: yes
44
48. 参考文献
• Unbound: Howto Optimise
• http://unbound.nlnetlabs.nl/documentation/
howto_optimise.html
• BIND 9.9 Administrator Reference Manual
• https://kb.isc.org/article/AA-00845/0/BIND-9.9-Administrator-
Reference-Manual-ARM.html
• Linux ip-sysctl.txt
• linux-src/Documentation/networking/ip-sysctl.txt
48
49. 更新履歴
• 2013/3/7 ver1.0
• 初版
• 2013/3/14 ver1.1
• キャッシュメモリ指定に関する注意を修正。TCPリクエ
スト数に関する注意、おすすめ設定を追加
• 2013/3/19 ver 1.2
• BIND9 UDPリスナタスクに関して追記
49