pdns-mrubybackend benchmark
この記事はDNS Advent Calendar 2015 - Qiitaの23日目の記事です。
先日リリースしたpdns-mrubybackendですが、
どれくらい遅いのかなと思い、ベンチマークをとってみました。
pdns-mrubybackend
は、PowerDNSのバックエンドをmrubyで記述することのできるモジュールです。
その前に、普通のDNSがどんなものなのか分かってないのでbindと比較してみます。
まずbind
bindはディストリビューション提供yumで入る最新版、設定は再帰問い合わせとDNSSECを切る以外はインストール時のまま。named.empty
をコピー、加工して上記のテストゾーンを作成。
続いてpdns-mrubybackend
PowerDNSの設定は以下のように。
benchmarkには、Nominum社のresperfを使用しました。
resperfを使用するにあたって作成したクエリ定義は
1 | www.example.jp. A |
を延々繰り返し記述し 57933824 行になったテキストファイルを使用します。
では実際のベンチ結果がこちら。
bindのほう
そしてmrubybackendのほう
残念ながらbindに対しピークでも40%程度のクエリしか捌けませんでした。
この結果を踏まえ、pdns-mrubybackendの性能改善を引き続き行っていこうと思います。
おまけ。
pdns-mrubybackendでもpdns.conf
から以下2行をコメントアウトしデフォルトの
キャッシュを効かせると(当然ながら)bindに近い数字になりました。
1 | query-cache-ttl=0 |