年底加班记

Posted 李迟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了年底加班记相关的知识,希望对你有一定的参考价值。

前段时间加班,趁元旦休息(实际干体力活)了几天,有点缓过神来了,于是抽空记录一下。

一、硬盘坏了

因政策变化,月初领导召开会议,制定了本月每日的工作任务——包括了周末。

周六那天在打扫卫生,因为已经预知会有人找,所以拿了电脑去,但大锤跑来跑去,碰倒电脑了,当时即死机,手动重启,虽然提示异常但能用,还能写代码,就没有多想。晚上电脑越来越卡,所以虚拟机均无法启动,提示CRC错误,后来才发现是磁盘数据损坏了,在网上找了些攻略尝试,由于非常卡,一直搞到凌晨3点多,但没有效果,想到了最坏的后果:所有数据都损坏了,那样就太严重了。于是抢救几个重要工程,因为周一要提供一个重要工具。但有的工程无法整体拷贝——依然提示CRC错误,还好工程源码在 gitlab 服务器上,所以单独拷贝有修改的文件。

把这个月涉及的工程都拷贝完毕后,就去睡觉,好像只过去一会就起床了,9点左右拿自己电脑到了公司,继续搞,忙活一天,到下午6点多基本把周末的任务完成。但新房装修就延期了2天。

二、连轴转

周一把 web 工具部署到内网中,提供到运营公司人员使用,但没有考虑到高并发问题,不到1个小时,运维人员反馈服务崩溃了,重启之,继续崩溃。因为这个工具是赶工出来的,且是内部使用,而又来不及解决,最后决定开启多个端口,部署多个服务,以分解压力。

晚上在新房干活,10点半组长在群里发消息,上面要求项目成员集中到某局大楼办公。早上赶到公司收拾电脑电源键盘和设备等,就过去。当晚搞到10点半才下班。主要是内网环境搭建比较麻烦,要装杀软要扫描要装准入软件等,不一而足。

除了项目成员,主任工和部门大领导也到场督战,从后来看到听到的信息了解到,这次会战规格很高,有关部门的分管领导也时不时莅临听取工作汇报。我们是在监控中心旁边一个小会议室办公,不大的桌子上摆着电脑和设备,而路由器、网线和插座散在各处。颇有当年在小黑屋做项目的感觉。

从上线前10天集中办公到上线前4天,晚上都是加班,周末也要加班。其实按我们既定的计划是可以从容应对的,但因为有些外部因素不可控,而政策迟迟没有发文,而元旦那天0点准时上线是死命令,搞得我们措手不及,直到上线前7天红头文件才确定下来,内容和之前的草案行文上略有出入,但却需要修改不同的系统,涉及大部分的模块,之前写的用例大部分也需要修改。周六那天以为可以晚点去,我9点半到场,结果一主任已经在批评一科长了,同时牵涉到我们的人员(那时连我一共才有2个人在),因为坐在我旁边,我一边改着代码一边听,虽然穿插着国骂,但句句在理,特别是谈到统筹能力和协调能力,很让我受益。

三、常态化

上线前3天,大部分代码修改完毕,测试发现的 bug 也修复差不多了,接着继续进行测试,开始进行升级试点。连续观察日志,未发现异常。这几天偶尔能在6点下班了,即使8点下班也还没习惯。

因为我手上的工程还有点小问题,所以还得继续完善,但没有重大影响。
由于磁盘坏了,虽然报修,但修复的时间不确定,因此一直使用个人电脑,但虚拟机环境已经没有了,只好找其它方法。还好去年有幸管理了一台服务器(其实是大家不屑于这种事),可远程访问,决定本地编辑代码,然后 scp 上传修改的代码到服务器上,再编译并运行。有次主任工看到了,直呼效率太低,我不敢说真正原因,只说服务器性能好,运行效率快。

我做的事说简单也不简单,但不能说复杂,只能说杂。因为涉及很多数据,特别是金钱数目,主任说一分钱也不能出错,如有差异,必须找出原因。
之前我用golang写了一个核对的工具,继而将其转化成 web 页面,发布使用。上周末整理了一下就交差使用,但遇到高并发问题,解决的方法是开启多个服务端口,本想上 nginx 的,但服务器管理自有一套制度,且是在生产环境的,我不敢妄动,于是叫运维人员转告使用的人员,如有端口用不了,就换端口。后来写了个监控脚本,用 ps 判断进程,如不存在,就启动之,间隔设置为10秒。从 top 结果看,其实程序占用资源并不多,比较偏向认为是代码本身问题,因为是用 go 的 gin 框架实现 web 服务,再调用自己封装的 C 函数,C 函数再调用 C++ 写的动态库函数,调用链比较长。
除我之外,还有同事用 C++ 在 Linux 下编写核对工具,测试发现有个别数据跟手工算的相差1分钱,和我的工具比较却相同,说明用程序算的结果有问题,查了很多,发现数据表中存储的小数点精度有异常。数值本来是 2.01,但在数据表中却是 2.09999999998,如果该值和 0.5 相乘,则会发生四舍五入问题,因为时间急,先手动修改数据表,再慢慢解决代码的问题。其实当时经讨论达成一致意见,就是改数据表的类型,但不能轻易动,毕竟涉及生产数据库,所以只能修改代码。

四、上线

真正考验的是元旦上线,为了迎接大考,提前写了应急预案,这也是我第一次经历,预案预想了各种异常情况及处理的方法,包括紧急修复和版本回滚等。

31号下午,领导说可以提前下班吃饭,10点多再来守夜。如此便结束了这段时间的免费盒饭之旅,从伙食角度出发,说实话,我觉得在外加班挺好的,至少菜样比我煮的丰富很多。
10点半我到场,不久,值班的运维人员到场,各级领导直陆续到场,一时人声鼎沸,但都是围绕此次上线的事。应急处理群建立了,不过不是我的职场,我还是打下手,查点数据库,查点信息汇报。近 0 点,各路人马就位,按部就班忙碌,日志正常,数据库有新数据,金额核对正确,大领导不时问小领导,小领导再问开发人员。半小时过去后,数据依然正常。大家退下吃夜宵,我们几个开发还守着数据库和日志。近2点,各级领导回去,临走慰问了我们一线人员并叮嘱元旦假期不能松懈。

2点多我也下班了,背着包,骑着电车,迎着冷风,拐过昏暗的小巷,突现一片火树银花,煞是绚丽,灯火下,站着许多俊男俏女,真是郎才女貌,看样子是在等车回家;旁边稀疏站着几个代驾的人看手机,他们估计天明才回家;而我终将会回到家,陪着大锤。

以上是关于年底加班记的主要内容,如果未能解决你的问题,请参考以下文章

记2017年年底,几次Python后端面试

送给迷茫的昨天(2019年底至2020年初)

日常年底

拒绝无意义加班!高质量的数据分析需求长这样

拒绝加班,远离业务部门5类垃圾需求的正确方式

Flask竟然如此高效!感觉这么多年代码白敲了...