[DNS][lua][自分用メモ] dnsdistでとりあえずパフォーマンスに気を付ける設定

AIX、UNIX、LinuxNetwork
Performance Tuning — dnsdist documentation

dnsdistをとりあえず使用していると、思ったよりもパフォーマンスが向上しないなと思い、ドキュメントをちゃんと確認してみると色々と見落としがあったのでメモしておく。あと、luaの備忘録にもしておきたい。

基本的には、dnsdistのドキュメントのPerformance Tuningのページを見るのが早い。

listenするインターフェースはCPUのスレッド分作る。

基本的に一つのローカルバインドごとに1スレッドで処理するようなので、reuse portを有効にしたうえで、同一のローカルバインドをあたかも異なるIPやポートであるかのように追加し処理させるようにする。例では以下の通り。

addLocal("192.0.2.1:53", {reuseport=true})
addLocal("192.0.2.1:53", {reuseport=true})
addLocal("192.0.2.1:53", {reuseport=true})
addLocal("192.0.2.1:53", {reuseport=true})
for i=1,<コア数> do
  addLocal("0.0.0.0:53", { doTCP=true, reusePort=true, tcpFastOpenSize=0 })
  addLocal("[::]:53", { doTCP=true, reusePort=true, tcpFastOpenSize=0 })
end

少ない数なら良いが、増えてると行数だけが増えるので、以下のようにluaを設定してもよいかも。
コア数のところの数値を変更することで、繰り返し処理を行う。

厳密に設定するときは、1.3.0で追加になったcpusを設定して、CPUのaffinityを設定する

CPUのaffinityについては以下のWebサイトを参考にするのが良いかも。

追記(2019年4月12日):

振り分け対象サーバのnewServer()関数でsocketsを指定するとよいかも。

Configuration Reference — dnsdist documentation
sockets=NUM, -- Number of sockets (and thus source ports) used toward the backend server, defaults to a single one

バックエンドサーバーに対して使用されているソケットの数(送信元ポート)を指定できます。デフォルトでは1つなのですが、問い合わせ件数が多いようだとこれを増やしてやるのが良いかも。
ただし、バックエンドへの問い合わせも増大するので、パフォーマンスとの兼ね合いになるでしょうね。

この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする
タイトルとURLをコピーしました