全部产品
云市场

负载说明

更新时间:2018-10-31 10:43:56

本文主要介绍在采用本地DBGateway部署方式,采集全量SQL的方案说明和负载说明。

摘要

  • 如果用户未开启全量SQL采集和慢SQL采集,仅使用监控和告警功能,那么本地DBGateway仅需要消耗2%的CPU;

  • 4核8G的ECS 自建数据库(即总CPU是400%),在3.10内核下,如果数据库的TPS 达到8000,开启全量SQL后,仅需要消耗10.7%的CPU;

全量SQL采集方案说明

  • DBGateway开启全量SQL采集后,会创建Linux系统AF_PACKET套接字,并开始抓取网络数据包,但不会影响正常网络通信;

  • DBGateway按照TCP/IP协议解析抓取的网络数据包,过滤其它端口的数据包,只对流入MySQL端口的数据包进行分析;

  • 流入MySQL端口的数据包按照MySQL通讯协议拼成完整的SQL;

  • DBGateway将多条SQL打包压缩后,加密上传到HDM的存储集群中。

负载说明

如果用户未开启全量SQL采集和慢SQL采集,仅使用监控和告警功能,那么本地DBGateway仅需要消耗2%的CPU。

如果用户开启了全量SQL,在不同的操作系统、硬件配置、MySQL 负载下,DBGateway的负载情况,线上真实场景压测数据如下:

测试环境

硬件说明

测试服务器均为阿里云ECS ecs.c5.xlarge 规格(4vCPU 8GB I/O优化)的服务器。

操作系统说明

  • 2.6内核的服务器操作系统为CentOS 6.8 64位
  • 3.10内核的服务器操作系统为CentOS 7.4 64位
  • 4.4内核的服务器操作系统为Ubuntu 16.04 64位

测试方法

  • 在另一台服务器上部署MySQL流量程序,用于创建SQL并访问MySQL,同时开启40个线程(session)访问目标MySQL(select/insert/update/delete循环);

  • SQL长度在50~281字节之间;

  • 使用top命令记录所在机器的CPU、内存使用情况。

测试结果

在Linux Kernel 3.2及以上的版本,DBGateway支持以PACKET_MMAP方式(在内核空间中分配一块内核缓冲区,然后用户空间程序调用mmap映射到用户空间)更快地抓取数据包;

所以DBGateway支持全量SQL功能,在Linux Kernel 3.2及以上的版本上,CPU开销显著降低。

从表格可以清楚的看到,4核8G的ECS 自建数据库(即总CPU是400%),在3.10内核下,如果数据库的TPS 达到8000,开启全量SQL后,仅需要消耗10.7%的CPU。

其中,如果仅仅只开启基础监控(数据库性能指标监控、主机性能指标监控等),仅需要2%的CPU。

1000 TPS 2000 TPS 4000 TPS 8000 TPS 16000 TPS
2.6内核 6.3% 8.6% 12.3% 21% 33.9%
3.10内核 3.7% 4.7% 7% 10.7% 18%
4.4内核 4% 5.3% 7% 11% 18.7%

HDM_user_manual_168

发行版本和Linux内核版本对应关系

发行版 版本号 内核版本
Redhat / CentOS RHEL 7.5 3.10.0-862
Redhat / CentOS RHEL 7.4 3.10.0-693
Redhat / CentOS RHEL 7.3 3.10.0-514
Redhat / CentOS RHEL 7.2 3.10.0-327
Redhat / CentOS RHEL 7.1 3.10.0-229
Redhat / CentOS RHEL 7.0 GA 3.10.0-123
Redhat / CentOS RHEL 7.0 Beta 3.10.0-54.0.1
Redhat / CentOS RHEL 6.10 2.6.32-754
Redhat / CentOS RHEL 6.9 2.6.32-696
Redhat / CentOS RHEL 6.8 2.6.32-642
Redhat / CentOS RHEL 6.7 2.6.32-573
Redhat / CentOS RHEL 6.6 2.6.32-504
Redhat / CentOS RHEL 6.5 2.6.32-431
Redhat / CentOS RHEL 6.4 2.6.32-358
Redhat / CentOS RHEL 6.3 2.6.32-279
Redhat / CentOS RHEL 6.2 2.6.32-220
Redhat / CentOS RHEL 6.1 2.6.32-131.0.15
Redhat / CentOS RHEL 6.0 2.6.32-71
Ubuntu 14.04 LTS 3.13
Ubuntu 16.04 LTS 4.4
Ubuntu 18.04 LTS 4.15
Aliyun Linux 17.0-123 4.4
Debian 8 3.16
Debian 9 4.9
SUSE Linux Enterprise 11 2.6.27
SUSE Linux Enterprise 11.1 2.6.32
SUSE Linux Enterprise 11.2 3.0.13
SUSE Linux Enterprise 11.3 3.0.76
SUSE Linux Enterprise 11.4 3.0.101
SUSE Linux Enterprise 12 3.12
SUSE Linux Enterprise 12.1 3.12
SUSE Linux Enterprise 12.2 4.4
SUSE Linux Enterprise 12.3 4.4
SUSE Linux Enterprise 15 4.12
OpenSUSE 42.1 4.1.12
OpenSUSE 42.2 4.4
OpenSUSE 42.3 4.4
CoreOS 1745.7.0 4.14.48
CoreOS 1465.8.0 4.12.14