导航栏

×
申请书 > 工作总结 > 导航

技术工作总结(示例)

这一年的工作,如果用一句话概括,就是把几个难缠的老问题按了下去,顺带给新写的代码多留了几道保险。下面拣几件印象深的事聊聊,或许对同行有点用。

第一件事是重构那个被人嫌弃的老模块。去年三季度,业务那边开始频繁抱怨,说处理一批数据要等十几分钟,比蜗牛还慢。这个模块是我三年前写的,当时数据量小,跑得挺欢,现在业务量翻了几番,老代码的毛病就全暴露了。打开那些尘封的源文件,说实话,心里挺不是滋味的——当年为了赶工期,循环套循环,数据库查了又查,一个大方法里塞了两千行,根本不敢动。但不动不行了。

我花了两个星期做技术复盘。先试着把那两千行的大方法按功能拆成十几个小服务,把数据查询和业务计算分开。这一步没啥技术含量,就是细心活,拆完必须保证每个小服务的单元测试覆盖率100%。拆完才发现,性能瓶颈主要在数据库交互上。原来的代码是在循环里一条一条查数据,比如处理1000条记录,就要查1000次数据库。这哪受得了?我改成批量查询,一次查一批,再用本地缓存把那些基本不变的数据(比如工艺标准参数)提前加载进来。这一步做完,单个请求的处理时间已经从12分钟降到了4分钟左右。

还差一点。我发现有一批计算任务互相不依赖,完全可以并行。于是引入多线程。第一次写的时候,图省事用了默认的newCachedThreadPool,结果一压测,内存直接飙到90%,线程数无限扩张,差点把机器打挂。后来老老实实算了算,根据服务器的CPU核心数和IO等待时间,把线程池核心线程数定在20,最大线程数30,队列用LinkedBlockingQueue。再压测,稳了,处理时间降到40秒。正式上线那天,我盯着监控屏幕,第一笔业务进来,40秒,第二笔,38秒,第三笔,42秒……我长舒一口气,站起来去倒了杯水,回来才在群里发了个结果:“搞定了,从12分钟到40秒左右。”后来业务部门的人说,现在泡杯茶的功夫就能干完,以前得溜达好几圈。

第二件事是一场让人挠头的现场故障。今年三月,一个雨后的下午,客户电话打过来,声音都变了,说产线上的控制系统全是乱码,整个批次数据对不上,产线快停了。我拎着电脑就往现场赶。到了发现,操作界面上显示的是乱七八糟的字符,数据库里存的也是乱码。初步判断是编码问题,可这套系统跑了两年都没事,怎么突然就犯病?

我先看应用日志,没报错。再看数据库连接配置,characterEncoding=utf8,写得好好的。再看操作系统字符集,locale命令输出en_US.UTF-8,也没问题。闷头查了两个小时,烟灰缸满了,还是没头绪。我坐在机房里,听着服务器的风扇声,脑子一遍遍过可能的原因,编码、连接、驱动,全想过了,就是没对上茬。后来我换了个思路,去翻最近服务器上的变更记录。一问运维,才知道前天夜里对数据库做过迁移,从MySQL 5.6升级到5.7。

关键点就在这里。我让他们把数据库的连接参数全部打印出来,发现新MySQL 5.7默认的character_set_server是latin1。虽然建表语句指定了utf8,但连接层如果用的是latin1,存进去的中文照样乱码。问题找到了,解决起来很简单:在MySQL配置文件my.cnf的[mysqld]段落里加上character-set-server=utf8,重启数据库服务,再重新写入数据,乱码消失。那几分钟真是挺熬人的,找到原因后,反而没什么激动的,只觉得累。回来我给团队提了个醒:以后凡是数据库变更,必须先通知开发做兼容性测试,不能想当然。

第三件事是把质量抠在每一次提交。上个月一个新同事提交了一段代码,逻辑很漂亮,但我让他加一个异常处理的测试用例——当第三方接口超时的时候,模块该怎么处理。他觉得没必要,说概率太低。我没多说,调出历史故障记录给他看:去年就因为没处理这种超时,导致线程池被占满,整个系统雪崩,产线停了半天。他看完二话不说,回去就把代码改了,加了超时重试和熔断降级。 M.SwY7.coM

这事让我觉着,质量不是说出来的,是抠出来的。我现在每天上午会花十分钟,手动登录服务器看一眼:top看看CPU负载,df -h看看磁盘空间,dmesg看看有没有硬件报错。这招笨,但管用。有一回,就是通过dmesg看到一条磁盘I/O报错的记录,赶紧联系运维把数据迁移了,一周后那块硬盘真的坏了。如果当时没发现,核心数据丢了,那就真摊上大事了。

这一年下来,没什么惊天动地的大事,就是跟代码、跟服务器、跟故障打交道。把每一个问题弄清楚,把每一行代码写踏实,比啥都强。接下来,我还是会盯着那几个容易出错的模块,继续琢磨怎么让系统跑得更稳。毕竟对咱们干技术的来说,不出事,就是最大的本事。

    更多精彩工作总结内容,请访问我们为您准备的专题:工作总结

文章来源://m.swy7.com/a/5323589.html

更多
L

猜你喜欢

更多
N

最新更新

更多
H

推荐访问