如何快速提升已有屎山稳定性?业务逻辑非常复杂,重构不现实

2023-03-03 23:44:42 +08:00
 edis0n0
公司一套十几年前买的外包写的外贸商城系统,3 个程序员修修补补用了十几年,什么日志都没有,变量名乱起,函数名和作用不一致,平均每月炸两次,一大半能重启解决(莫名其妙数据库连不上,日志里没有任何错误,重启服务没用、nginx 莫名其妙写了 1.6TB 稀疏文件把固态硬盘写满了,重启就会消失 这类完全不知道怎么排查的故障),关键还经常半夜炸,然后时差原因半夜还是客户最多的时候。

不想润,因为系统没炸的时候非常闲,基本都在摸鱼,每周只要工作半小时那种
3713 次点击
所在节点    程序员
37 条回复
imdong
2023-03-03 23:45:57 +08:00
定时器,比如定时重启,
edis0n0
2023-03-03 23:47:40 +08:00
@imdong #1 目前就是这样干的,检查到掉线就重启,但还有 40%左右重启不能解决
edis0n0
2023-03-03 23:50:09 +08:00
单函数名和作用不一致这一个就被坑过好几次,例如 /t/899919 在发邮件通知的 PHP 文件里扣手续费导致账对不上,一晚上找不到问题出在哪
edis0n0
2023-03-03 23:52:05 +08:00
部分模块是 ASP.NET 的,部分模块是 PHP 的系统,还有部分新的模块是 ASP.NET Core 的
opengps
2023-03-03 23:54:50 +08:00
重启能解决,大概率是资源没及时释放,内存泄漏句柄泄漏等问题
v2defe
2023-03-03 23:56:20 +08:00
系统稳定了你不就不稳定了🙂
edis0n0
2023-03-04 00:00:22 +08:00
@v2defe #6 炸得这么频繁我也不稳定🙂
aureole999
2023-03-04 00:06:07 +08:00
快速的办法:把所有不稳定的功能全删了就 ok 了。
开个玩笑。既然都叫屎山了怎么会那么容易就让你改好,这东西只能一点一点改。
比如先加上日志,这不算重构吧应该。然后改一些方法内局部变量名,再到改全局变量名,改方法名,加注释。改完名加完注释应该就通读了代码并有一定的理解了,加测试用例,自动回归测试。然后改小的模块,最后改大模块。别想一口吃个胖子,反正除了炸的时候都很清闲,那就慢慢改呗。
fisherwei
2023-03-04 00:12:49 +08:00
首先,nginx 的那个问题应该好解决吧,你们这个系统是有大量上传文件的场景吗?
edis0n0
2023-03-04 00:16:15 +08:00
@fisherwei #9 都是一些图片上传的场景,仓库出库图片、客户返图一类,十几年数据量 300GB ,nginx 请求 body 最大是 2MB 。
night98
2023-03-04 00:20:21 +08:00
简单点,上监控,各种监控搞起来,有了监控就能发现大部分主要问题,然后解决掉。

次一些的,把核心链路拆出来重写,其他非核心链路的上监控慢慢调
Chad0000
2023-03-04 03:38:26 +08:00
先上日志系统
然后业务代码迁移到.net standard 项目以做好迁移到 core 的准备
netnr
2023-03-04 05:56:02 +08:00
长时间稳定运行,会增加你 OUT 的风险
azusematsuri
2023-03-04 06:31:55 +08:00
按功能后端,一部分一部分重构到 go
searene
2023-03-04 07:04:39 +08:00
有可能是内存泄漏,建议加监控、日志
Chad0000
2023-03-04 07:33:25 +08:00
@azusematsuri
迁移到 go ?写惯了 C#就很难(不想)迁移到其他语言了。
litchinn
2023-03-04 08:26:12 +08:00
“系统没炸的时候非常闲”,万一搞好了,它不炸了,领导觉得不需要你了咋办 doge
forgottencoast
2023-03-04 08:26:29 +08:00
平时很闲,就平时慢慢改啊。。。。
pengtdyd
2023-03-04 08:39:55 +08:00
《计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决》
yjd
2023-03-04 09:14:35 +08:00
连半小时都省了,是不是离离职不远了^_^

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/920978

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX