大家好,我是章鱼猫。
今天给大家推荐的项目是“KOOM”。 KOOM(Kwai OOM、Kill OOM)是快手性能优化团队在处理移动OOM问题过程中沉淀的一整套解决方案。
其中,Java内存部分在此基础上进行了大量优化,解决了在线内存监控的性能问题,在线收集和分析内存镜像,不影响用户体验。
自2020年春节后在快手主APP上线以来,解决了很多OOM问题。 其性能和稳定性经受住了大量用户和设备的考验。 因此快手电脑客户端,我们决定开源来回馈社区,欢迎大家帮助我们改进。
背景
随着移动端业务逻辑日益复杂,以及4K编解码、AR魔表等对内存要求较高的场景逐渐普及,OOM问题已成为快手客户端稳定性管理的第一大难题。
在日常的版本迭代过程中,偶尔会出现OOM激增的情况,而且线上环境非常复杂。 仅AB实验就有数千次快手电脑客户端,无法做到事前预防和事后恢复。 因此,迫切需要一种高性能的在线内存监控解决方案。
在第一期开源的Java内存监控解决方案中,他们调查了美团和UC发表的相关技术文章,发现业界的优化方向主要集中在内存镜像的分析部分,一直没有解决方案到内存镜像的转储部分。 在此过程中应用程序会冻结很长时间。 经过深入研究,他们发现可以利用Copy-on-write机制来fork子进程dump来满足他们的需求。
随机采集线上真实用户的内存镜像,普通dump和fork子进程dump阻塞用户使用的耗时如下: