1秒あたり最大3,000クエリを取得するキャッシュ専用のDNSサーバーがあります。仕様は次のとおりです。
Xeon dual-core 2,8GHz 4GB of RAM
Centos 5x (kernel 2.6.18-164.15.1.el5PAE)
bind 9.4.2
rndcステータス:再帰クライアント:666/4900/5000
1秒あたり約300の新しいクエリ(キャッシュにはありません)。
バインドは、シングルスレッド構成の1つのコアで常に100%を使用します。マルチスレッドに再コンパイルした後、2つのコアでほぼ200%を使用します:( iowaitはなく、sysとuserのみです。検索しましたが、バインドがCPUをどのように使用するかについての情報は見つかりませんでした。なぜボトルネックになるのですか?
もう1つ、ここにRAM使用法:
cat /proc/meminfo
MemTotal: 4147876 kB
MemFree: 1863972 kB
Buffers: 143632 kB
Cached: 372792 kB
SwapCached: 0 kB
Active: 1916804 kB
Inactive: 276056 kB
Max-cache-sizeを0に設定して、バインドが必要なだけRAMを使用できるようにしましたが、常に〜2GBで停止します。毎秒キャッシュされたクエリがないため、理論的にはRAMは使い果たされる必要がありますが、そうではありませんでした。
何か考えはありますか?
TIA、
-Gk
どのバージョンのBINDを使用していますか? Bind 9.5より前のバージョンには、高負荷でのスケーラビリティの問題が知られています。 https://www.dns-oarc.net/files/dnsops-2007/Graff-BIND9-cache.pdf を参照してください。
その上:
dnscache のdnscacheを使用してサイドテストを実行することをお勧めします。インストールには10分かかり、調整と保守が非常に簡単で、予測可能なパフォーマンスがあります。
nbound を使用すると、パフォーマンスが大幅に向上する可能性があります。 BINDをキャッシング再帰サーバーとしてのみ使用していて、構成に特別なことは何もない場合、Unboundへの切り替えは非常に簡単です。
そのクラスのサーバーの3kqpsは、raw I/Oおよびメモリ帯域幅の観点からは比較的少量です。信頼できるサーバーであれば、20kに近づくことができると思います。
そうは言っても、BIND 9.4.2はoldです。独自にロールするか、RHEL以外のRPMを使用できる場合は、代わりにBIND 9.7.xを試して、パフォーマンスの問題が解決するかどうかを確認する必要があります。
また、2GBを超えるRAMを使用するには、x86ではなく64ビットモードのx64で実行する必要があります。
興味深い問題...見たことがないbind
100%CPUを使用しているが、クイック検索で 非常に興味深いページ 問題の解決に役立つ可能性があることが判明...問題がどのように変わるか教えてくださいでる。結果を知りたいです。