当前位置:网站首页>佛性问题排查小结
佛性问题排查小结
2022-08-09 03:12:00 【FA-117】
目录
背景
工作中维护Java项目,框架或者依赖jar包升级司空见惯。作为RD,我希望能够平滑兼容,不过有时兼容也是一项浩大的工程,所以选择不兼容,例如SpringBoot 1.x迁移到SpringBoot2.x。
在这种情况下,项目难免出现原来正常,升级后异常的情况。这种问题,我称之为佛性问题。过去也解决过几次这种现象,对其中使用到的技巧做一下总结。
技巧说明
探针级--差异比较
我有许多问题都通过该方法解决。比较关键对象, 变更前和变更后的差异,毕竟这些差异很有可能是罪魁祸首。针对异常现场相关的对象做差异比对, 比如Web项目中的FilterChain中Filter的类型、顺序和运行时变量。如果差异有影响, 开始DEBUG是必须的。
想补充的是。如果差异没有影响, 也需要DEBUG确认, 并记录下来因为可能影响是间接的。此外, 运行时变量由于太多, 无法逐一比较, 差异很容易被忽略。这里建议关注对代码流程有影响的关键变量。比如原本默认为FALSE,现在默认为TRUE, 这种被发现时想打人。还有如果本地运行不OK, 发布到测试服务器上试试。自己电脑不行, 用别人电脑试试。Windows不行, Linux上试试。
入门级--分段扎针
如果一针不见血, 那就把整体拆分多块, 每块扎一次。把待更新的整体, 拆解为多个部分, 逐步升级, 仅在当前PART升级无问题之后, 再进入下一个。这样将问题范围缩小在具体的一小块,避免迷失在代码的汪洋大海中。这种方案比较稳妥, 可以准确地反馈升级进度, 提高升级的信心。此外, 如果剩余内容真的有问题, 已验证的内容可以先上, 作为升级失败的折中方案。
高级别--赢在准备
首选,了解升级的必要性。 升级是别人感觉简单认为就是改下版本号, 自己觉得压力山大, 但是又无法把山描绘出来的事情。据我了解, 往往做好了功劳是别人的, 出问题锅是自己的。其次,比正常业务开发更谨慎地排期。毕竟, 风险是未知的, 出于负责的考虑, 你需要充裕的时间。尽可能用别人能理解的语言, 阐述风险, 并尽可能寻求外部支持, 参与的人越多压力就越小。想象一下,遇到佛系问题, 可能忙活1天也没有进展, 你的进度在哪里?最后,开始前尽可能获取组件changelist和releaslog并仔细阅读, 结合项目做到心中有数。比如spring session组件在1.x版本时是一个独立组件, 到了2.x拆分为了spring-session-core和spring-session-data-x两个组件, 这样在开始就能注意到影响。话说回来, 了解到什么程度是OK的, 我只能说自己认真读过, 结合项目分析过, 在小本本上记上几个注意事项就OK了。
小结
这里讨论排查问题的三个技巧,实际工作中需要综合运用。在没有头绪时, 我也曾一度怀疑项目是"薛定谔的项目"。但仍然需要坚信, 是自己的错, 而不是电脑的锅。
边栏推荐
- Leetcode Brushing Questions - 148. Sort Linked List
- Ingress的概念和原理
- 加密公司集体裁员 以应对加密寒冬和通货膨胀?现加密总市值低于1万亿美元
- How to deal with cyber attacks?
- 【信号去噪】基于Sage-Husa自适应卡尔曼滤波器实现海浪磁场噪声抑制及海浪磁场噪声的产生附matlab代码
- C专家编程 第10章 再论指针 10.2 指针数组就是Iliffle向量
- 交换VLAN实验
- Deep learning - in the recognition, for example, this paper discusses how to preserve the neural network model
- 数学基础(四)极大似然估计、误差的高斯分布与最小二乘估计的等价性
- 【洛谷】P1456 Monkey King
猜你喜欢
随机推荐
C专家编程 第9章 再论数组 9.7 轻松一下---软件/硬件平衡
高并发+海量数据下如何实现系统解耦?【中】
LeetCode_43_字符串相乘
嵌入式系统驱动高级【2】——平台总线式驱动开发上_基础框架
【es6】教程 Symbol数据以及迭代器和生成器
Leetcode Brushing Questions - 148. Sort Linked List
dice和iou
SwiftUI * Grid
Kubernetes:(十四)安全机制(一定要做好安全措施哦)
Win10开始菜单打不开怎么办?
【图像去噪】基于边缘增强扩散 (cEED) 和 Coherence Enhancing Diffusion (cCED) 滤波器实现图像去噪附matlab代码
20220525动态规划:跳跃游戏
SQL注入(2)
【机器学习】21天挑战赛学习笔记(三)
Cyanine5tetrazine(CAS号:1427705-31-4)结构式原理
网路编程_socket返回值
最优化方法——0.618法matlab实现
【扫雷--1】
Hcip MPLS experiment
别了,IE浏览器









