9.16.49 性能数据

9.16.49 性能数据

想请教一下大家有没有遇到过升级bind版本后查询性能下降的问题,下面是9.16.49、9.18.25、9.12.3-P4三个版本的性能测试结果:

9.16.49 性能数据

查询 数量
发送 135762
完全的 (99.97%) 135719
丢失的 (0.03%)43
  • 响应代码:NOERROR 135719 (100.00%)
  • 平均数据包大小:请求 35,响应 51
  • 运行时间(秒):120.063225
  • 每秒查询次数:1130.396089
  • 平均延迟(秒):0.086731(最小 0.001513,最大 0.172726)
  • 延迟标准差(秒):0.019442

9.18.25 性能数据

查询 数量
发送 142300
完全的 142300
丢失的 0
  • 响应代码:NOERROR 142300 (100.00%)
  • 平均数据包大小:请求 35,响应 51
  • 运行时间(秒):120.087726
  • 每秒查询次数:1184.967063
  • 平均延迟(秒):0.084285(最小 0.001735,最大 0.199955)
  • 延迟标准差(秒):0.018229

9.12.3-P4性能数据

查询 数量
发送 1016067
完全的 (100.00%)1016040
丢失的 (0.00%)27
  • 响应代码:NOERROR 1016040 (100.00%)
  • 平均数据包大小:请求 35,响应 51
  • 运行时间(秒):120.014670
  • 每秒查询次数:8465.965036
  • 平均延迟(秒):0.011652(最小 0.001157,最大 0.034407)
  • 延迟标准差(秒):0.001628

部署环境

  • 操作系统:CentOS 7 2009
  • 内核版本:3.10.0-1160.92.1.el7.x86_64
  • 当前版本:BIND 9.12.3-P4 id:a3d2ae0
  • 测试版本:BIND 9.16.49 和 9.18.25
  • 测试工具:dnsperf
  • 相关测试:5 个域名,使用命令 ( dnsperf -d dnstest.txt -s 10.0.3.12 -l 120) 对内部域名进行 120 秒查询

编译命令

9.12.3 和 9.16.49

./configure \
    --prefix=/usr/local/named \
    --sysconfdir=/etc/named \
    --with-dlz-mysql \
    --enable-threads \
    --enable-epoll \
    --disable-chroot \
    --enable-backtrace \
    --enable-largefile \
    --disable-ipv6 \
    --with-openssl \
    --with-libxml2

9.18.25

./configure \
    --prefix=/usr/local/named \
    --sysconfdir=/etc/named \
    --disable-chroot \
    --enable-largefile \
    --with-openssl \
    --with-libxml2

所有版本都已安装contrib/dlz/modules/mysql

BIND 配置

options {
   listen-on port 53 { any; };
   listen-on-v6 port 53 { ::1; };
   directory       "/etc/named";
   allow-query     { any; };
   forward first;
   forwarders { 10.0.3.6; 10.0.0.221; 10.0.0.222; };
   recursion yes;
   max-cache-ttl 30;
};

logging {
   channel default_log {
      file "/var/log/bind/named.log" versions 10 size 200m;
      severity dynamic;
      print-category yes;
      print-severity yes;
      print-time yes;
   };
   channel query_log {
      file "/var/log/bind/query.log" versions 10 size 200m;
      severity dynamic;
      print-category yes;
      print-severity yes;
      print-time yes;
   };
   channel error_query_log {
      file "/var/log/bind/error_query.log" versions 1 size 200m;
      severity dynamic;
      print-category yes;
      print-severity yes;
      print-time yes;
   };
   channel resolver_log {
      file "/var/log/bind/resolver.log" versions 10 size 200m;
      severity dynamic;
      print-category yes;
      print-severity yes;
      print-time yes;
   };
   category default {default_log;};
   category queries {query_log;};
   category query-errors {error_query_log;};
   category resolver {resolver_log;};
   category lame-servers {null;};
   category edns-disabled {null;};
};

dlz "Mysql zone" {
   database "dlopen /usr/lib/bind9/dlz_mysql_dynamic.so
      {host=10.0.3.26 dbname=dns ssl=false port=3306 user=dnsuser pass=aaaaabbbbbccccc threads=50}
      {select zone from dns_records where zone = '$zone$' and  view = 'any' limit 1}
      {select ttl,type,if(mx_priority>0,mx_priority,NULL),case when lower(type)='txt' then concat('\"',data,'\"') when lower(type)    =  'soa'  then   concat_ws(' ',  data,  resp_person,  serial,  refresh,  retry,  expire,  minimum)   else   data   end   as   mydata   from   dns_records where zone = '$zone$'   and host = '$record$' and view = 'any'}";
};

答案1

很多很多个月前……在运行一组 BIND9 DNS 服务器时,我也注意到了这一点。根据您发布的编译内容,您很可能不仅可以恢复性能,还可以通过使用 GCC 编译时性能优化来提高性能?测试并试用它以查看,但我获得了显着的收益。如果您的工作量严格是权威答案,那就更好了。

大多数编译器都使用开箱即用的 -O2。尝试使用 -Ofast 宏扩展。阅读它并确定最适合您特定环境的扩展。收益是值得的!!!您可能需要返回并重新编译您自己的 openss 和 libxml2 库?如果您使用主线软件存储库中提供的内容,则它们经过编译后可在各种类似的硬件平台上工作并提供平均性能。针对您实际运行的平台/芯片组进行优化,并进行更多基本优化(即 -O2)。

差别是巨大的!!!这有点令人烦恼,但如果你记得你做了什么,你也可以用其他软件重现你的努力。性能改进是惊人的!在每个人眼中,你都会看起来像个超级英雄。他们会把你扛在肩上,抱着你四处走动,欢呼你的名字。你终于配得上在办公椅上披上斗篷了。将会有很多欢乐。万岁!

相关内容