读书笔记吧

导航栏

×
你的位置: 笔记网 > 高分作文 > 导航

工作总结

发表时间:2026-04-23

2026年试用期转正工作总结。

接手核心模块的第三周,凌晨两点,值班电话响了。监控显示,某数据解析服务的CPU占用率从15%直线拉到了98%,响应时间从300ms变成4.5秒,而且还在涨。我坐在工位前,手边是下午倒的那杯咖啡,早凉了。运维群里有人@我:“是不是新版本的问题?”我没急着回复,先开了三个终端:一个看top,一个看jstat -gcutil,一个准备dump堆内存。

问题定位比想象中快。jstat输出显示,YGC次数正常,但FGC每分钟达到了12次,单次暂停2.1秒。这不对劲。jmap -histo:live的结果让我皱了眉——java.util.HashMap$Node的实例数超过了42万个,其中绝大多数来自一个叫ContextHolder的类。翻代码,发现每次请求都会新建一个解析上下文存入HashMap,但只有正常流程走了release(),异常路径直接返回,占用的资源没人管。并发一上来,HashMap越堆越大,GC自然扛不住。

改法不复杂:第一,在finally块里强制调用release(),无论是否抛异常;第二,把HashMap换成GuavaCacheBuilder,设置60秒过期,最大容量5000;第三,写了一个定时任务,每10秒扫描一次未关闭的上下文,数量超过100就往日志里打一条WARN。上线后压测,同样800并发,响应时间P99稳定在420ms,FGC降到了每小时不到2次。这个事让我养成了一个习惯——以后但凡涉及资源持有类的代码,先问一句:异常路径释放了吗?

不过,真正让我记住教训的,不是这次性能优化,而是一次定时任务的翻车。

试用期第二个月,主管让我优化一个凌晨跑的日志聚合任务。原脚本跑40分钟,我看了SQL,发现索引用不上,全表扫描。重写之后,加了覆盖索引,又改成分批查询,压测环境跑12分钟就完了。我挺得意,周五晚上直接发了上线单。周六早上还没睡醒,手机就炸了——数据库CPU 95%,持续了20分钟。冲到公司,打开慢查询日志,发现新SQL里多了一行我根本没注意到的SELECT ... FOR UPDATE。为了“保证数据一致性”,我顺手加了行锁,结果把整张统计表锁了20分钟。而早高峰,另一个写入业务正好要更新同一张表,全部堵死。

主管没骂我,只说了句:“下次改SQL之前,先把锁影响范围评估一下,写出来。”那天下着小雨,我坐在工位上,把FOR UPDATE的触发条件、锁粒度、持有时间一条条列出来,贴在团队文档库里。后来我又加了一条硬性规定:所有涉及大批量更新或行锁的脚本,必须在预发环境跑一次并发模拟,输出“锁影响评估报告”才能上线。这条规定,现在还在用。

设备维护方面也有一件事值得提。一台工控机频繁重启,系统日志只有“watchdog timeout”四个字。厂家说换主板。我没同意,拿了热成像仪扫了一圈,发现南桥芯片旁边一颗电容表面温度比旁边的高了12℃。示波器一量,纹波超标三倍。换掉那颗电容,机器连续跑了43天没再重启。这事儿让我明白一个道理:故障排查不能只盯着日志,硬件层面的温度、电压、振动这些物理量,有时候才是真凶。

转正答辩前一周,有个运维同事在群里@了我:“新版本跑了三天,一个告警都没有,稳了。”就这一句话,我觉得比什么评语都实在。

回头捋这三个月,真正沉淀下来的东西,不是某个具体的代码片段,而是几条能复用的操作习惯:

排查故障先画范围。比如那次CPU飙升,我第一步不是看代码,而是用top -H -p找线程号,再用printf "%x\n"转成十六进制,最后到jstack里定位具体代码行。三步下来,问题出在哪个类的哪一行,清清楚楚。这叫“二分法”——不是猜,是拿工具切。

质量验收要量化,不写“性能良好”。每次压测,我会在报告里明确写:95%请求在200ms内完成,连续72小时无内存泄漏,FGC次数不超过5次。数字摆在那,过就是过,不过就是不过。

技术复盘必须输出动作。那次锁表事故之后,我不光记住了“不要乱加FOR UPDATE”,还写了一个检查脚本,自动扫描SQL里的锁关键字并告警。每条反思,最后都要落到一个可执行的工具或规范上,不然就是白反思。

试用期结束了,但那些凌晨查日志、现场焊电容、一条条核对SQL锁范围的日子,已经把“严谨”两个字磨进了骨头里。现在手里攥着三份自己写的检查清单、两个自动化脚本、一套压测模板,下次再遇到类似问题,不用慌,照着流程走就行。

    想了解更多【工作总结】网的资讯,请访问:工作总结

文章来源://www.dsbj1.com/gaofenzuowen/191290.html

猜你喜欢