惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
V
Vulnerabilities – Threatpost
Apple Machine Learning Research
Apple Machine Learning Research
V
V2EX
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
人人都是产品经理
人人都是产品经理
Latest news
Latest news
博客园 - 三生石上(FineUI控件)
美团技术团队
aimingoo的专栏
aimingoo的专栏
Google Online Security Blog
Google Online Security Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Threatpost
Y
Y Combinator Blog
T
Tailwind CSS Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
A
Arctic Wolf
C
Cyber Attacks, Cyber Crime and Cyber Security
小众软件
小众软件
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
Tenable Blog
W
WeLiveSecurity
L
LINUX DO - 热门话题
D
Docker
Cyberwarzone
Cyberwarzone
量子位
A
About on SuperTechFans
The Last Watchdog
The Last Watchdog
雷峰网
雷峰网
C
CERT Recently Published Vulnerability Notes
P
Palo Alto Networks Blog
The Hacker News
The Hacker News
Blog — PlanetScale
Blog — PlanetScale
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Full Disclosure
The Cloudflare Blog
T
The Blog of Author Tim Ferriss
T
The Exploit Database - CXSecurity.com
Engineering at Meta
Engineering at Meta
O
OpenAI News
Hacker News - Newest:
Hacker News - Newest: "LLM"
Scott Helme
Scott Helme
IT之家
IT之家
S
Secure Thoughts
MongoDB | Blog
MongoDB | Blog
L
Lohrmann on Cybersecurity
博客园 - 司徒正美
Google DeepMind News
Google DeepMind News

美团技术团队

美团 · 技术团队 美团 · 技术团队 美团 · 技术团队 美团 · 技术团队 美团 · 技术团队 美团 · 技术团队 美团发布基于 N-gram 全新模型:嵌入扩展新范式,实现轻量化 MoE 高效进化 2025美团技术年货,「马」上到来 多维创新打造强泛化智能体模型,LongCat-Flash-Thinking-2601技术报告发布 美团 EvoCUA 刷新开源 SOTA,会用电脑还会持续进化的智能体! 美团 LongCat-Flash-Thinking-2601 发布,工具调用能力登顶开源 SOTA! KuiTest:基于大模型通识的 UI 交互遍历测试 AAAI 2026 | 美团技术团队学术论文精选 2025 | 美团技术团队热门技术文章汇总 美团 LongCat-Video-Avatar 正式发布,实现开源 SOTA 级拟真表现 大模型剪枝新范式:先浓缩,再剪枝——DenoiseRotator技术解读 LongCat 上线 AI 生图!精准高效,AI 创作不设限 美团发布 LongCat-Image 图像生成模型,编辑能力登顶开源 SOTA AI Coding与单元测试的协同进化:从验证到驱动 R-HORIZON:探索长程推理边界,复旦NLP&美团LongCat联合提出LRMs能力评测新框架 美团 LongCat 发布 AMO-Bench:突破 AIME 评测饱和困境,重新定义 LLM 数学上限 美团 LongCat Interaction 团队发布大模型交互系统技术报告 WOWService 美团 LongCat 团队发布全模态一站式评测基准 UNO-Bench 美团开源LongCat-Audio-Codec,高效语音编解码器助力实时交互落地 NeurIPS 2025 | 美团技术团队论文精选 LongCat-Flash-Omni正式发布并开源:开启全模态实时交互时代 美团 LongCat 团队发布 VitaBench:基于复杂生活场景的交互式 Agent 评测基准 LongCat-Video 视频生成模型正式发布,探索世界模型的第一步 ICCV 2025 | 美团论文精选及多模态推理竞赛冠军方法分享 从0到1建设美团数据库容量评估系统 可验证过程奖励在提升大模型推理效率中的探索与实践 LongCat-Flash-Thinking 正式发布,更强、更专业,保持极速! 开源 | InfiniteTalk:无限长虚拟人视频生成的新范式 美团正式发布并开源 LongCat-Flash-Chat,动态计算开启高效 AI 时代 美团 M17 团队开源 Meeseeks 评测集:揭秘大模型的“听话”能力 可信实验白皮书系列08:开放式分析引擎 | 附PDF合集 美团智能头盔研发实践系列02:软件功能篇 美团智能头盔研发实践系列01:硬件设计篇 ACL 2025 | 美团技术团队论文精选 美团开源OIBench与CoreCodeBench:揭示大模型编程能力的真实水平 可信实验白皮书系列07:高阶实验工具 开源 | MeiGen-MultiTalk:基于单张照片实现多人互动演绎 可信实验白皮书系列06:观察性研究 JDK高版本特性总结与ZGC实践 可信实验白皮书系列05:准实验 可信实验白皮书系列04:随机轮转实验 可信实验白皮书系列03:随机对照实验 可信实验白皮书系列02:AB实验基础 可信实验白皮书系列01:从0到1的方法论与实践指南 MTGR:美团外卖生成式推荐Scaling Law落地实践 OR算法+ML模型混合推理框架架构演进 ICLR&CVPR 2025美团技术团队论文精选 行为正则化与顺序策略优化结合的离线多智能体学习算法 预测技术在美团弹性伸缩场景的探索与应用 美团技术年货 | 600+页电子书,算法、工程、测试、数据、安全系列大合集 鸿蒙应用签名实操及机制探究 2024 | 美团技术团队热门技术文章汇总 AutoConsis:UI内容一致性智能检测 CIKM 2024 | 美团技术团队精选论文解读 大前端:如何突破动态化容器的天花板? KDD 2024 OAG-Challenge Cup赛道三项冠军技术方案解读 新一代实验分析引擎:驱动履约平台的数据决策 大众点评技术部包揽KDD 2024 OAG-Challenge Cup赛道全部3项冠军 ACL 2024 | 美团技术团队精选论文解读 KDD 2024 | 美团技术团队精选论文解读 基本功 | 一文讲清多线程和多线程同步 小程序可测性能力建设与实践 SIGIR 2024 | 美团技术团队精选论文解读 Spark向量化计算在美团生产环境的实践 CVPR 2024 | 美团技术团队精选论文解读 基于多模态信息抽取的菜品知识图谱构建 DDD在大众点评交易系统演进中的应用 美团外卖基于GPU的向量检索系统实践 美团大规模KV存储挑战与架构实践 基于接口数据变异的App健壮性测试实践 美团技术年货 | 600+页电子书,前端、后端、算法、测试、运维系列大合集 美团RASP大规模研发部署实践总结 2023 | 美团技术团队热门技术文章汇总 美团到店终端从标准化到数字化的演进之路 AIOps在美团的探索与实践——事件管理篇 美团技术博客十周年,感谢一路相伴 基于UI交互意图理解的异常检测方法 如何利用「深度上下文兴趣网络」提升点击率? 基于模式挖掘的可靠性治理探索 代码变更风险可视化系统建设与实践 美团多场景建模的探索与实践 MJDK 如何实现压缩速率的 5 倍提升? 如何提供一个可信的AB测试解决方案 KDD 2023 | 美团技术团队精选论文解读 美团前端研发框架Rome实践和演进趋势 斩获CVPR 2023竞赛2项冠军|美团街景理解中视觉分割技术的探索与应用 MySQL自治平台建设的内核原理及实践(下) CVPR 2023 | 美团技术团队精选论文解读 超大规模数据库集群保稳系列之三:美团数据库容灾体系建设实践 超大规模数据库集群保稳系列之二:数据库攻防演练建设实践 Robust 2.0:支持Android R8的升级版热修复框架 超大规模数据库集群保稳系列之一:高可用系统 一次「找回」TraceId的问题分析与过程思考 基于AI+数据驱动的慢查询索引推荐 SOTA!目标检测开源框架YOLOv6 3.0版本来啦
数据库全量SQL分析与审计系统性能优化之旅
粟含 · 2022-06-09 · via 美团技术团队

1 背景

数据库安全一直是美团信息安全团队和数据库团队非常注重的领域,但由于历史原因,对数据库的访问只具备采样审计能力,导致对于一些攻击事件无法快速地发现、定损和优化。安全团队根据历史经验,发现攻击访问数据库基本上都存在着某些特征,经常会使用一些特定SQL,我们希望通过对MySQL访问流量进行全量分析,识别出惯用SQL,在数据库安全性上做到有的放矢。

2 现状及挑战

下图是采样MySQL审计系统的架构图,数据采集端基于pcap抓包方式实现,数据处理端选用美团大数据中心的日志接入方案。所有MySQL实例都部署了用于采集MySQL相关数据的rds-agent、日志收集的log-agent。rds-agent抓取到MySQL访问数据,通过log-agent上报到日志接收端,为了减少延时,上报端与接收端间做了同机房调度优化。日志接收端把数据写入到约定的Kafka中,安全团队通过Storm实时消费Kafka分析出攻击事件,并定期拉数据持久化到Hive中。

我们发现,通常被攻击的都是一些核心MySQL集群。经统计发现,这些集群单机最大QPS的9995线约5万次左右。rds-agent作为MySQL机器上的一个寄生进程,为了宿主稳定性,资源控制也极为重要。为了评估rds-agent在高QPS下的表现,我们用Sysbench对MySQL进行压测,观察在不同QPS下rds-agent抓取的数据丢失率和CPU消耗情况,从下面的压测数据来看结果比较糟糕:

QPS丢失率CPU利用率
10368.721.03%307.35%
17172.617.23%599.90%
29005.5128.75%662.39%
42697.0551.73%622.34%
50833.5063.95%601.39%

如何在高QPS下保证较低的丢失率与CPU消耗?已经成为当前系统的一个亟待解决的难题与挑战。

3 分析及优化

下面主要介绍围绕丢失率与CPU消耗这一问题,我们对数据采集端在流程、调度、垃圾回收和协议方面做的分析与改进。

3.1 数据采集端介绍

首先,简要介绍一下数据采集端rds-agent,它是一个MySQL实例上的进程,采用Go语言编写,基于开源的MysqlProbe的Agent改造。通过监听网卡上MySQL端口的流量,分析出客户端的访问时间、来源IP、用户名、SQL、目标数据库和目标IP等审计信息。下面是其架构图,主要分为5大功能模块:

1. probe

probe意为探针,采用了gopacket作为抓包方案,它是谷歌开源的一个Go抓包库,封装了pcap。probe把抓取到原始的数据链路层帧封装成TCP层的数据包。通过变种的Fowler-Noll-Vo算法哈希源和目的IP port字段,快速实现把数据库连接打散到不同的worker中,该算法保证了同一连接的来包与回包的哈希值一样。

2. watcher

登录用户名对于审计来说极其重要,客户端往往都是通过长连接访问MySQL,而登录信息仅出现在MySQL通信协议的认证握手阶段,仅通过抓包容易错过。

watcher通过定时执行show processlist获取当前数据库的所有连接数据,通过对比Host字段与当前包的客户端ip port,补偿错过的用户名信息。

3. worker

不同的worker负责管理不同数据库连接的生命周期,一个worker管理多个连接。通过定期比对worker的当前连接列表与watcher中的连接列表,及时发现过期的连接,关闭并释放相关资源,防止内存泄漏。

4. connStream

整个数据采集端的核心逻辑,负责根据MySQL协议解析TCP数据包并识别出特定SQL,一个连接对应一个connStream Goroutine。因为SQL中可能包含敏感数据,connStream还负责对SQL进行脱敏,具体的特定SQL识别策略,由于安全方面原因,这里不再进行展开。

5. sender

负责数据上报逻辑,通过thrift协议将connStream解析出的审计数据上报给log-agent。

3.2 基础性能测试

抓包库gopacket的性能直接决定了系统性能上限,为了探究问题是否出在gopacket上,我们编写了简易的tcp-client和tcp-server,单独对gopacket在数据流向图中涉及到的前三个步骤(如下图所示)进行了性能测试,从下面的测试结果数据上看,性能瓶颈点不在gopacket。

QPSpcap缓冲区丢失率CPU利用率
100000100MB0%144.9%

3.3 CPU画像分析

丢失率与CPU消耗二者密不可分,为了探究如此高CPU消耗的原因,我们用Go自带的pprof工具对进程的CPU消耗进行了画像分析,从下面火焰图的调用函数可以归纳出几个大头:SQL脱敏、解包、GC和Goroutine调度。下面主要介绍一下围绕它们做的优化工作。

3.4 脱敏分析及改进

因为SQL中可能包含敏感信息,出于安全考虑,rds-agent会对每一条SQL进行脱敏处理。

脱敏操作使用了pingcap的SQL解析器对SQL进行模板化:即把SQL中的值全部替换成“?”来达到目的,该操作需要解析出SQL的抽象语法树,代价较高。当前只有采样和抓取特定SQL的需求,没有必要在解析阶段对每条SQL进行脱敏。这里在流程上进行了优化,把脱敏下沉到上报模块,只对最终发送出去的样本脱敏。

这个优化取得的效果如下:

对比项QPS丢失率CPU利用率
改进前50833.5063.95%601.39%
改进后51246.4731.95%259.59%

3.5 调度分析及改进

从下面的数据流向图可以看出整个链路比较长,容易出现性能瓶颈点。同时存在众多高频运行的Goroutine(红色部分),由于数量多,Go需要经常在这些Goroutine间进行调度切换,切换对于我们这种CPU密集型的程序来说无疑是一种负担。

针对该问题,我们做了如下优化:

  1. 缩短链路:分流、worker、解析SQL等模块合并成一个Goroutine解析器。
  2. 降低切换频率:解析器每5ms从网络协议包的队列中取一次,相当于手动触发切换。(5ms也是一个多次测试后的折中数据,太小会消耗更多的CPU,太大会引起数据丢失)

这个优化取得的效果如下:

对比项QPS丢失率CPU利用率
改进前51246.4731.95%259.59%
改进后51229.540%206.87%

3.6 垃圾回收压力分析及改进

下图为rds-agent抓包30秒,已分配指针对象的火焰图。可以看出已经分配了4千多万个对象,GC压力可想而知。关于GC,我们了解到如下两种优化方案:

  1. 池化:Go的标准库中提供了一个sync.Pool对象池,可通过复用对象来减少对象分配,从而降低GC压力。
  2. 手动管理内存:通过系统调用mmap直接向OS申请内存,绕过GC,实现内存的手动管理。

但是,方案2容易出现内存泄漏。从稳定性的角度考虑,我们最终选择了方案1来管理高频调用函数里创建的指针对象,这个优化取得的效果如下:

对比项QPS丢失率CPU利用率
改进前51229.540%206.87%
改进后51275.110%153.32%

3.7 解包分析及改进

MySQL是基于TCP协议之上的,在功能调试过程中,我们发现了很多空包。从下面的MySQL客户端-服务端数据的交互图可以看出:当客户端发送一条SQL命令,服务端响应结果,由于TCP的消息确认机制,客户端会发送一个空的ack包来确认消息,而且空包在整个流程中的比例较大,它们会穿透到解析环节,在高QPS下对于Goroutine调度和GC来说无疑是一个负担。

下图是MySQL数据包的唯一格式,通过分析,我们观察到以下特点:

  1. 一个完整的MySQL数据包长度>=4Byte
  2. 客户端新发送命令的sequence id都是为0或者1

而pcap支持设置过滤规则,让我们可以在内核层将空包排除掉,下面是上述特点对应的两条过滤规则:

特点1: ip[2:2] - ((ip[0] & 0x0f) << 2) - ((tcp[12:1] & 0xf0) >> 2) >= 4
特点2: (dst host {localIP} and dst port 3306 and (tcp[(((tcp[12:1] & 0xf0) >> 2) + 3)] <= 0x01))

这个优化取得的效果如下:

对比项QPS丢失率CPU利用率
改进前51275.110%153.32%
改进后51246.020%142.58%

基于上述经验,我们对数据采集端进行功能代码重构,同时还进行一些其它优化。

4 最终成果

下面是优化前后的数据对比,丢失率从最高60%下降到了0%, CPU消耗从最高占用6个核下降到了1个核。

为了探究抓包功能对MySQL性能损耗,我们用Sysbench做了一个性能对比测试。从下面的结果数据可以看出功能对MySQL的TPS、QPS和响应时间99线指标最高大约有6%的损耗。

5 未来规划

虽然我们对抓包方案进行了各种优化,但对于一些延迟敏感的业务来说性能损耗还是偏大,而且该方案对一些特殊场景支持较差:如TCP协议层发生丢包、重传、乱序时,MySQL协议层使用压缩、传输大SQL时。而业界普遍采用了直接改造MySQL内核的方式来输出全量SQL,同时也支持输出更多的指标数据。目前,数据库内核团队也完成了该方案开发,正在线上灰度替换抓包方案中。另外,对于线上全量SQL端到端丢失率指标的缺失,我们也将陆续进行补齐。

本文作者

粟含,来自于美团基础研发平台/基础技术部/数据库技术中心。

招聘信息

美团基础技术部-数据库技术中心诚招高级、资深技术专家,Base上海、北京。美团关系数据库规模大,每年快速的增长,每天承载数千亿的访问流量。在这里可以体验高并发、高可用、高可扩展性的业务挑战,可以紧跟并开拓业界前沿技术,体会到技术进步带来的生产力提升,欢迎投递简历至:suhan03@meituan.com。