Redian新闻
>
【229秒 -> 69秒】部署时间缩短69%,ICBU商家技术部应用部署治理实践

【229秒 -> 69秒】部署时间缩短69%,ICBU商家技术部应用部署治理实践

公众号新闻


阿里妹导读


部署时长不仅影响线上问题的解决恢复能力,也严重影响了我们日常的开发效率。本文记录了作者部署时的一些提效手段和最终的效果。

一、概述


1.1.背景

随着集团安全生产规范,需要达到1,5,10标准(1分钟响应,5分钟定位,10分钟解决),并且故障在5分钟内解决可以降一级。
团队应用部署时长平均接近3分钟,一些历史较久的老应用甚至会突破5分钟,部署时长不仅影响我们线上问题的解决恢复能力,也严重影响了我们日常的开发效率。


1.2.术语与缩写解释


1.3.构建部署流程耗时分布

应用拉上部署流程,会经历编译期和部署期两个大模块,其中还分若干个子步骤。部署耗时的时间统计,是从创建容器开始,到应用自检结束。
整个流程在代码编译、镜像构建、暂停老容器、启动应用等多个模块都可以进行优化,本篇着重对部署耗时进行深入分析,并以omega为样板间进行打造,提升应用的部署效率。



二、应用部署现状一览

这是omega应用1月份预发环境的部署启动时长,平均在229秒,预发环境防单点问题一般会部署2台机器,那omega应用平均每部署一次预发环境就需要7~8分钟,接下来我们来看看这229秒有哪些是可以进行优化的。



三、部署提效手段


3.1.应用启动日志分析

每个应用差异较大,这里以omega应用为例,提供一个分析的视角供参考。
这一步是最直接最有效的,应用越老,不合理内容往往越多。分析应用的启动日志,理解并解释每一行启动日志的背景和含义,看是否有效,是否必要,能否下线,能否优化。

3.1.1.下线liaoyuan中间件

traceId:2024-03-05 18:02:04,957 INFO  Loading XML bean definitions from class path resource [platform/liaoyuan.xml]
omega应用中引入了liaoyuan中间件,用于查询相关菜鸟地址信息,liaoyuan启动耗时是比较多的。经分析发现,omega引入liaoyuan本质上只用在了一个接口上,而这个接口也只有一个上游方,并且请求的QPS流量非常低,如果能将这个去掉,则可以下线整个liaoyuan模块。
经排查,neptunes调了omega的这个接口,但代码中并没有用到该接口的返回值,所以推进neptunes的调用下线,最终在2月27完成了对接口的停止调用,下线omega的liaoyuan模块。

3.1.2.没找到任何后缀名为“.ear”、“.spring”或“.war”的包

启动日志中发现有很多这样的日志,并且类路径带notify,但omega已经把notify全部下线完毕。
原因是项目中还存在NotifyManagerBean对象,并调到了它的init方法,就会检查notify的初始化检测,还有一些文件系统的恢复等。一种可以去除所有NotifyManagerBean对象的(前提是所有notify已下线),或者设置下 NotifyManagerBean#setPreInitializeReliableAsynSendManager(false) 这个可以确保不使用可靠异步发送 NotifyManagerBean#asynSendMessage。

3.1.3.doom初始化失败!

「doom启动失败,请检查启动参数是否正确配置」从启动日志看,前人在omega上可能接过doom模块,但因为各种原因没有完全接入。当下无doom相关使用需求,这里先移除doom相关模块。

3.1.4.No appenders could be found for logger

druid默认用得是log4j,但我们工程统一使用的是slf4j+logback,导致无相应log4j配置文件,而druid本身也支持切换日志组件,这里可以替换为slf4j。
在本地启动需要加上vm启动参数 -Ddruid.logType=slf4j



3.1.5.下线AutoConfig模块

AutoConfig是一个管理应用配置的组件,是webx时代的产物,如今已暂停维护,并且有多个替换产品。
omega已将autoconfig全部迁移至diamond管理,理论上已经不再需要antoconfig。但担心梳理有遗漏,这次暂不做改动,待详细梳理后再做确认。

3.2.应用启动诊断

由ICBU的交易平台团队(砺豪、如驰)和ICBU架构团队共同做了应用启动优化治理平台,可以支持应用启动数据采集插件、应用启动详细数据报表、自动诊断/自动推荐解决方案等,是一个针对应用部署启动优化的平台。借助这个平台。可以帮我们发现更多应用在启动过程中的优化点刑天平台 — 应用启动速度优化一站式解决方案

3.2.1.aspectjrt 包版本过低导致启动耗时慢

org.springframework.aop.aspectj..AspectJExpressionPointcut方法名:matches总时长=6014ms
-- 作者:焉漪 aspectjrt包版本低
aspectjrt是AspectJ框架的一部分,是一个用于实现面向切面编程(AOP)的工具,在低版本存在启动耗时较高的问题aspectjrt 包版本过低导致启动耗时慢,这里我们按推荐升级到指定版本。
  • aspectjrt.jar包主要是提供运行时的一些注解,静态方法等内容。

  • aspectjweaverjar包主要是提供了一个java agent用于在类加载期间织入切面(Load time weaving),并且提供了对切面语法的相关处理等基础方法,供ajc使用或者供第三方开发使用。

3.2.2.不存在的HsfConsumer

HSF不存在 com.ali...XXX....XXXInterface:1.0.0
-- 作者:焉漪 HSF不存在
HSFProvider下线了但其他应用中配置该HSFConsumer没下线,这种case在老应用的存在比较多,应用启动平台帮我们诊断出了不存在的HSF,为防止意外可以到HSFOPS上搜索一下,确认完后这里逐项进行去除,减少HSFConsumer的创建HSF 服务不存在的几种处理方式




3.3.启动数据报表

除了显而易见能诊断出的问题,应用启动优化平台中还帮我们列出了整体的启动数据报表,可以有针对性的进行治理和优化。

3.3.1.RPC初始化注册失败

经验证,这些注册失败的,HSFprovider都已经下线,这里将这些已经不存在provider的consumer进行删除。

3.3.2.SpringBean初始化耗时详情

所有springbean的加载耗时都有记录,其中x.x.x.x.UserCacheService这个bean初始化时间很长,代码分析后发现这个bean并没有被工程所使用,这里将该bean的声明进行删除。



x.x.x.x.Mysql、x.x.x.x.Manager、x.x.x.x.CacheManager等,为mysql、TDDL、myBatis等相关bean,耗时较多,但不易优化。特别是针对tddl分库分表,库实例表实例较多,整体耗时也相应增加。

3.3.3.Spring Bean 异步化创建

async-bean-startup-starter是ICBU交易团队砺豪、如驰同学开发的一款Spring Bean异步化创建组件。若发现有部分bean创建耗时较长,并且该bean不在启动过程中需要,可以考虑配置为异步化。
实在不知道该如何优化,就看看能不能做成异步,可使用官方的异步化starter
-- 应用启动优化治理平台
这里不盲目使用异步化,首先考虑的是如何降低bean的创建耗时,以及该bean是否需要存在,若实在无法优化,并且以及该bean的使用场景不在启动过程中依赖,则可以尝试异步化组件。

3.3.4.CBU代码迁移

在B2B时代,omega是CBU和ICBU共用的应用。随着BU、BG的拆分,CBU团队完成了迁移不再依赖omega,但流量迁走了,代码一直还在。部分bean虽然不会使用,但一直在创建,同样也包括它直接间接依赖进来的二方库等。

3.4.启动脚本诊断

项目构建完后进入启动阶段,本质上是调用应用中配置在docker-config中的相关sh脚本文件进行启动,若脚本文件存在不合理配置,也会影响应用部署时长。

3.4.1.offline_hsf重复执行

SHELL脚本:start.sh 二级脚本:appctl.sh 三级脚本:null 方法名:offline_hsf 总时长=40s
-- 作者:焉漪 offline_hsf重复执行



可以看到执行应用暂停了调了offline_hsf执行了40s,在应用启动时又调了offline_hsf,又执行了40s,offline_hsf耗时较久且重复执行,治理参考应用启动Shell脚本观测官方文档(持续更新)
Note:有的应用dockerfile在打镜像的时候,会把bin文件夹下的脚本文件全部打进去,这样改完脚本文件后,需要重新构建镜像,不然会不生效。校验办法是到机器上打开对应对应,看改动是否生效。



瞬间应用启动有质的上升!!



四、最终效果

4.1.部署提速69%

废话不多说,咱们直接上结果。omega的部署启动时长,优化前在229秒,优化后在69.71秒,加速提效69%。

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
京东每月1.4万人次代打卡,每次收费15元?新规要求午休时间缩短为一小时,不得关灯京东被曝排队离职,严抓考勤!午休时间缩短、解散工作无关群聊!刘强东放狠话:这些人不是我兄弟墨尔本直飞首尔航班开通,每周4次,时间缩短至11小时最佳实践|一文讲解端线程死循环的治理智慧医疗建设走过数据收集与治理阶段,正步入医疗数据价值应用“战场”【买房】Lexington优质学区大独栋 | 近95和Burlington商场 | 6b4.5b 4,636sqft $195W【橙县房产】南加州Huntington Beach亨廷顿海滩市3卧联排新房【2024.05.22】新法下,公司治理法律应用手册,整理出来了!【接受本科生】【Allston超大空间公寓】【近BU】【多户型可选】【1B1B $2950+】【2B2B $3300+】RAG 技术在金融支付类 ToC 应用场景中的探索与实践AI早知道|抖音治理AI虚拟人;vivo开放蓝心大模型应用下载;百度推出Comate 2.0宇宙巨大的环状结构加拿大人的退休梦碎!愿用部分工资换养老金!大批人永远无法退休抄作业 | 中通数据治理实践!挂牌时间缩短,租户竞争加剧!买“老住宅”的房主后悔了!|卡米拉承诺不再购买真皮草!CG跟练有感图书馆面临预算危机,每周运营时间缩减至五天,华人家长表达担忧澳新城铁线开通时间公布,华人区居民有福啦!通勤时间有望缩短【2024 NECINA 年会】与哈佛医学院CSSA联合主办 “共创未来:AI技术应用与AI对生物医药创新的促进”又一家技术+产品双杀的大模型创业公司!一款测试,让其WAIC大会展位火爆亮点剧透丨大模型产业应用如何落地,WAIC 探讨技术突破与最新实践NYU商学院所有专业均已转为STEM,本科生毕业有更多机会留美!新加坡将推出超过2800间新组屋!等待时间缩短早鸟报|视频号总用户时长同比增超80%;抖音电商一年治理超8000个虚假营销账号;美团闪电仓对违规“一店多开”从严治理...百年银行赶大潮:三年攻坚,出击数据治理与 AI 应用中文信息处理实验室2025届推免招生说明 — 欢迎加入中文信息处理实验室!【租房】部分优惠一月房租中介费 Brookline绿线翻新公寓 1b2.8K+ 2b3.5K+ 多个起租时间 近BU 接本科生深圳物流无人机完成欧洲首例化工样本运输,运输时间缩短为六分之一;杰瑞燃气直驱涡轮压裂橇首次亮相川渝页岩气井场丨智能制造日报直播预约 | 常国珍:生成式人工智能的数据应用合规 | CAIGP人工智能治理沙龙第1期对话王小川:除了杀时间、省时间,「加时间」才是 AI 应用的好赛道上海人工智能安全治理实验室成立了!熵泱——第四十四章美股基本面 - 2024_03_16 * 晨报 * 日本加息?巨头不怕!。中欧专家共议欧盟2040气候目标,实行CBAM还应考法国南部特鲁斯重磅消息:晋升副高可按取得主治资格时间计算,晋升时间大大缩短
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。