負載說明
本文主要介紹在采用本地DBGateway部署方式,采集全量SQL的方案說明和負載說明。
注意事項
如果用戶未開啟全量SQL采集和慢SQL采集,僅使用監(jiān)控和告警功能,那么本地DBGateway僅需要消耗2%的CPU。
4 vCPU 8 GiB的ECS自建數(shù)據(jù)庫(即總CPU是400%),在3.10內(nèi)核下,如果數(shù)據(jù)庫的TPS達到8000,開啟全量SQL后,僅需要消耗10.7%的CPU。
全量SQL采集方案說明
DBGateway開啟全量SQL采集后,會創(chuàng)建Linux系統(tǒng)AF_PACKET套接字,并開始抓取網(wǎng)絡數(shù)據(jù)包,但不會影響正常網(wǎng)絡通信。
DBGateway按照TCP/IP協(xié)議解析抓取的網(wǎng)絡數(shù)據(jù)包,過濾其他端口的數(shù)據(jù)包,只對流入MySQL端口的數(shù)據(jù)包進行分析。
流入MySQL端口的數(shù)據(jù)包按照MySQL通訊協(xié)議拼成完整的SQL。
DBGateway將多條SQL打包壓縮后,加密上傳到DAS的存儲集群中。
負載說明
若您未開啟全量SQL采集和慢SQL采集,僅使用監(jiān)控和告警功能,那么本地DBGateway僅需要消耗2%的CPU。
若您已開啟全量SQL,在不同的操作系統(tǒng)、硬件配置、MySQL負載下,DBGateway的負載情況,線上真實場景的壓測數(shù)據(jù)如下:
測試環(huán)境:
硬件說明:測試服務器均為阿里云ECS ecs.c5.xlarge規(guī)格(4 vCPU 8 GiB I/O優(yōu)化)的服務器。
操作系統(tǒng)說明:
2.6內(nèi)核的服務器操作系統(tǒng)為CentOS 6.8 64位
3.10內(nèi)核的服務器操作系統(tǒng)為CentOS 7.4 64位
4.4內(nèi)核的服務器操作系統(tǒng)為Ubuntu 16.04 64位
測試方法:
在另一臺服務器上部署MySQL流量程序,用于創(chuàng)建SQL并訪問MySQL,同時開啟40個線程(session)訪問目標MySQL(select/insert/update/delete循環(huán))。
SQL長度在50~281字節(jié)之間。
使用top命令記錄所在機器的CPU、內(nèi)存使用情況。
測試結果:
在Linux Kernel 3.2及以上的版本,DBGateway支持以PACKET_MMAP方式(在內(nèi)核空間中分配一塊內(nèi)核緩沖區(qū),然后用戶空間程序調(diào)用mmap映射到用戶空間)更快地抓取數(shù)據(jù)包。
所以DBGateway支持全量SQL功能,在Linux Kernel 3.2及以上的版本上,CPU開銷顯著降低。
從表格可以清楚的看到,4 vCPU 8 GiB的ECS自建數(shù)據(jù)庫(即總CPU是400%),在3.10內(nèi)核下,如果數(shù)據(jù)庫的TPS達到8000,開啟全量SQL后,僅需要消耗10.7%的CPU。
說明若僅開啟基礎監(jiān)控(數(shù)據(jù)庫性能指標監(jiān)控、主機性能指標監(jiān)控等),需要2%的CPU。
內(nèi)核版本
1000 TPS
2000 TPS
4000 TPS
8000 TPS
16000 TPS
2.6內(nèi)核
6.3%
8.6%
12.3%
21%
33.9%
3.10內(nèi)核
3.7%
4.7%
7%
10.7%
18%
4.4內(nèi)核
4%
5.3%
7%
11%
18.7%