前言
在工作中,每周都会遇到一些问题,这些问题在大家工作中可能会有许多共性,于我也是一种经验的积累小结。我觉得花一些时间整理一下,跟粉丝读者们分享一下日常工作遇到的问题,这是一个很好的互动和文章分享的痛点。
这是第八篇。
项目启动优化
项目版本装机首次启动的时间大概需要耗时8分钟左右,有2分钟是系统启动到调用业务服务的时间,然后有6分钟左右是业务服务启动的耗时。产线那边工人的反馈这个很耗时,需要研发这边尽快优化,领导很重视。项目这边也没人熟悉这块,新人刚到位,还在熟悉代码,作任务交接中,最后还是把任务放给我了,我也做好站好最后一班岗的准备。
首先,分析了启动的流程,发现主要的耗时是一些yang文件的安装及初始配置的导入。yang文件安装耗时大概4分钟,然后还有半分钟是初始配置的导入,最后还有一些是配置下发及业务初始化代码。项目临近发布,修改业务初始化的代码不是很现实。况且占大头的是框架这边的耗时,所以主攻就是yang安装及初始配置导入。
分析yang安装慢,发现主要的因素是由于之前都是使用shell脚本,首先调用命令获取所有已安装的yang,然后过滤对比一个个yang的版本,根据版本决定是update,还是install 样。最终调用命令一个个操作,平均每个命令执行需要耗时8、9秒,大概十几个yang,然后耗时就大概到200s了。我的解法就是尝试使用python代码来进行安装,获取首次安装的实际操作,直接连接sysrepo库,然后按序更新或者安装yang。首先省略了yang获取的命令,然后就是在一个python进程中把需要作的工作一次性搞完,减少多个shell命令的调用。效果比较明显,最终yang的安装耗时缩短到1分钟8秒左右。
然后就是初始配置的导入,同样发现每个模块的初始配置导入命令平均耗时2s左右,然后总共十几个yang模块,耗时也就达到了半分钟。这个思路也比较明确了,同样要把所有的初始配置导入合并到一个命令里面去执行。第一个版本,只是简单的把处理逻辑照搬到python代码中,大概耗时也就缩短了3s左右,耗时依旧需要27s。然后再进一步分析慢的原因,发现主要是由于分文件安装的时候,每个文件也是需要创建独立的连接来处理,连接的建立需要加载已安装的yang及配置,还需要应用上一次计划的变更,耗时比较长。第二个版本,就先对所有的文件配置先合并,然后在一个连接里应用配置,最终优化后的耗时仅需要7s。
最后程序优化后,首次业务启动仅需要2分钟了,外加系统启动的2分钟,时间只剩4分钟,比原先的8分钟少了一半。
更多
上周得了个感冒,人都快虚脱了。许久不病的人,一旦生病都是比较严重的。因此,就落了一期文章。
临近春节,项目第一个版本也已经开始试点,这个时候,框架基本很少有什么功能性的问题,还是比较稳定。从一月份开始,我主要的任务就是性能优化,然后就是项目交接,文档梳理,带带新人。
上周末部门开了个年会,回顾了这一年来项目开发的一个个里程,到最终的试点发布。经过大半年的加班加点,项目第一个版本终于试点上线。就像是自己养的孩子,突然长大了,就要独立面对生活了,内心有很多难以言表的话语,既期待又担忧。虽然在会上没有得到任何的奖项(毕竟已经提离职走人了),但是被专门提到并受到感谢,内心还是很感慨激动的。
28号考勤截止,上午很快就把设备啥的归还转移了,然后就在工位上看看linux菜鸟教程。临近下班的时候,被直接上级叫去沟通了年终奖,感谢部门领导的肯定。
说个实话,在这半年多的工作期间,发现了许多优秀的同事,当然也有许多老油条,有些很有潜力的新人,也有迟钝却不主动思考的人。看看年会那些获奖的同事,基本上都是要么加班比较拼的,要么的确有所成就的(这里都是只的研发人员)。但是,并没有发现那些我认为的技术高手,高手都能很快的解决问题,并且没有很多bug。在数据上看,他们的产出并不高,完成的功能,很难被认为具有挑战性,因为他们懂得怎么去做,又不会遇到很大的难题。这种环境下,感觉这些人就是在温水中煮的青蛙,慢慢的,很难出成绩,挺可惜的。
跟老同事聊天,部门缺编严重,但是招人也是很不容易。面试过的一些人,尽管有许多年的工作经验,但是却没有深入技术,很多已然成为工具人,技术水平却没有相应提高,薪资要求还挺高的。招进来的人呢,技术水平也不怎么样,写的代码也是很差,C语言开个临时数组还敢上千K,不怕栈爆掉,也是很无语。俗话说打铁还得自身硬,程序员码农需要一直进行自我修养。这回我也算是裸辞吧,有几个意向的岗位,但最终还没确定好,利用这个假期好好规划梳理一下自己的职业生涯与生活,不能再顾此失彼了,2022年将是职业生涯的重要转折,加油。
过年了,祝大家虎年大吉,虎虎生威!
行动,才不会被动!
欢迎关注个人公众号 微信 -> 搜索 -> fishmwei,沟通交流。