专栏名称: 阿里云开发者
阿里巴巴官方技术号,关于阿里的技术创新均将呈现于此
目录
今天看啥  ›  专栏  ›  阿里云开发者

“四两拨千斤” —— 1.2MB 数据如何吃掉 10GB 内存

阿里云开发者  · 公众号  · 科技公司  · 2024-10-30 08:30
    

主要观点总结

蚂蚁埋点网关出现进程OOM导致闪退的问题,经过一系列分析和实验,最终定位到是由于单次请求携带大量埋点数据,内存池管理不精细,以及特定业务场景下内存释放不及时导致的。解决方案包括优化内存管理,提前释放内存,动态分配内存,使用更安全的编程语言等。

关键观点总结

关键观点1: 问题背景

蚂蚁埋点网关基于nginx开发,负责移动端埋点数据采集,出现偶发性进程crash,初步排除内存泄漏问题。

关键观点2: 初步分析

先排除了内存泄漏问题,初步怀疑内存使用不当或内存越界访问导致问题。

关键观点3: 核心难点

无法生成core-dump文件,无法直接定位问题原因。

关键观点4: 创新解决方案

在用户态实现一个oom-killer(青春版),通过主动杀死进程的方式产生core-dump文件。

关键观点5: 问题定位

通过core-dump文件定位到问题原因:单次请求携带大量埋点数据,由于重复字段多压缩率极高,绕过了请求body的尺寸限制;数据攒批发送阶段内存池分配粗旷,并且内存池释放速度远小于数据流入速度;高时效、多份写出的业务特性进一步加剧了内存消耗。

关键观点6: 解决方案实施

为schema埋点增加了单次请求最多携带的埋点条数限制;优化内存管理,提前释放内存,动态分配内存;使用更安全的编程语言等。

关键观点7: 小结

成功定位并解决网关上的问题,总结出在排查时要坚信现象背后必有原因,可以拿出来讨论、大胆假设、小心求证等心得。


免责声明

免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。 原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过 【版权申诉通道】联系我们处理。

原文地址:访问原文地址
总结与预览地址:访问总结与预览
推荐产品:   推荐产品
文章地址: 访问文章快照