美文网首页
Apollo配置修改后为啥应用就重启

Apollo配置修改后为啥应用就重启

作者: emperorxiaomai | 来源:发表于2024-05-06 11:27 被阅读0次

首先,Apollo是一个配置管理系统, 可以简单了解下。
配置中心:Apollo入门了解 - 知乎 (zhihu.com)
本身使用它的目的就是可以让线上的程序可以在不发布的情况下,做一些形为的更改。普遍用于灰度上线功能,开关等。我们遇到的问题是,当配置修改后,5~10分钟左右应用就会内存爆满,被容器Kill,重启。
由于配置本身修改不频繁,而且本身是一个定时任务的程序,就没有高优的处理该问题;也让团队内的同学排查过,结果都没找到具体的原因。
这两天五一假期前,有点时间自己去排查了一下。结果发现是一个低级错误引起的。
原因是,针对一个单独的业务模块 自定义了一个复杂实际的配置项,通过监听Apollo的变更事件的方式,来触发该复杂实体的反序列化。本身事件添加Listener是期望在类初使化的时候做。这里使用了Spring的@PostConstruct注解。
然而这个方法是Public的,程序员偷懒,在业务代码中也调用了该方法。随着应用上线线时间的增加,最终导致监听器数量逐渐累积,每天大概增加25W次。也就是说,一旦配置变更,该监听器会被执行十万甚至百万次,最终CPU资源耗尽,内存耗尽。应用被Kill,重启。
本身是一个低级的错误,而且测试环境没有线上的业务量,不能重现。只有沉下来看代码才能发现问题。当然,没有了上帝视角,可以从表象上去定位。比如,监听器的方法调用量为什么被调用那么多次,近而一步一步的找到root case.
很多时候我们都在权衡一个事情的,优先级,处理一个问题的代价。避开公司投入,处理这种问题才是对个最有帮助的。

相关文章

  • spring boot apollo 热加载 重启

    背景:在apollo更新配置属性时,后台应用实时热加载生效,不用手动重启项目,项目应用自动重启项目实时更新; 一、...

  • Apollo简介

    Apollo简介 2016年5月,携程开源的配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能...

  • 55 开源配置中心Apollo

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的 配置,配置修改后...

  • docker部署apollo分布式配置中心

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能...

  • Spring Boot 2.0 整合携程Apollo配置中心

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能...

  • Apollo 配置中心:分布式部署

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能...

  • Spring Boot 2.0 整合携程Apollo配置中心

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能...

  • 配置中心Apollo实战

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能...

  • IDEA 启动Tomcat后Output日志中中文乱码

    修改配置: 将控制util下的ConsoleHandler编码配置为 修改后重启服务

  • 携程Apollo简单入门教程这一篇就够了

    1. Apollo背景 对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的...

网友评论

      本文标题:Apollo配置修改后为啥应用就重启

      本文链接:https://www.haomeiwen.com/subject/okulfjtx.html