日常排查问题技巧小结

文章目录

    • [1. 写在最前面](#1. 写在最前面)
      • [1.1 关于程序突然消失这件事](#1.1 关于程序突然消失这件事)
    • [2. 排查消失的程序](#2. 排查消失的程序)
      • [2.1 程序崩溃](#2.1 程序崩溃)
      • [2.2 系统强杀程序](#2.2 系统强杀程序)
      • [2.2 迁移服务误拉任务](#2.2 迁移服务误拉任务)
      • [2.3 真相](#2.3 真相)
    • [3. 碎碎念](#3. 碎碎念)
    • [4. 参考资料](#4. 参考资料)

1. 写在最前面

「焦虑、烦躁解决不了任何问题,只会让问题变得更加难严重」。工作越久,对于工作的厌倦情绪就变的越重。甚至会开始思考是不是应该走哪条看起来鲜花盛开的路。但是这个世界上从来就没有一种叫做「后悔」的药,与其在懊悔的情绪中,反复自我折磨,不如那把在走的路变的鲜花盛开吧。

1.1 关于程序突然消失这件事

由于笔者所在的公司,业务大多都是有状态的,为这保证有状态的任务在遇到

  • 「网络问题,比如机房失联」

  • 「非人力可控制因素,比如海啸地震」

  • 「程序 Bug 中途任务崩溃退出」

  • ......

仍能尽最大可能为客户提供稳定的服务。公司设计一套完整的恢复系统 --- 即在发生上述故障场景的时候,在不同的机房为客户重新拉起相同的任务。

注:以上迁移并非无损,以 「录制」业务为例,上述迁移发生的时候,任务会有 90s 左右的录制内容丢失。

问题:在新版本迭代的过程中,测试小姐姐反馈,任务总是会中途退出?

注:这个问题的原因真的是一个非常机缘巧合的场景导致的,但是真的值得记录一下,以防下次再犯。

2. 排查消失的程序

2.1 程序崩溃

思路一:服务是通过 C++ 实现的,若是任务崩溃,应该会留下 dump 的文件,但是神奇的事件是根据测试提供的崩溃记录,笔者并未发现任何 dump 的文件。

验证:排查了多个 case 后,发现均无 dump 或 crash 产生的文件,此思路不对。

注:喜欢写代码、喜欢查问题,大概就是因为喜欢这种大胆怀疑,小心求证的过程

2.2 系统强杀程序

思路二:Linux系统中可以对程序设置资源限制,例如CPU时间、内存使用等。当程序超出了这些限制,操作系统可能会强制终止该程序。

验证:

  • 通过 /var/log/messages 文件查看 kill 记录:

    shell 复制代码
    cat /var/log/messages | grep "killed"
  • 通过 /var/log/syslog 文件查看 kill 记录:

    shell 复制代码
    cat /var/log/syslog | grep "killed"
  • 通过 dmesg 命令

    dmesg | grep "kill"
    

综上所查,系统没有强杀过测试的进程

2.2 迁移服务误拉任务

「When you have eliminated the impossibles , whatever remains , however improbable , must be the truth。」

思路三:迁移服务出现 bug,在误拉任务

验证:排查了迁移服务的日志,以及被迁移服务监控的任务,发现是在任务被退出后,迁移服务才启动了拉起的流程,所以迁移服务没有问题。

2.3 真相

思路四:部署服务的平台出现了问题,在强杀任务。

验证:与平台侧同事反馈后,他们表示,最近在上新功能,为了防止失联的资源浪费,他们会根据策略识别已发布的服务是否需要回收资源,进而强杀任务。

注:平台是指公司内部的 k8s 平台,强杀任务回收资源,是指他们会根据 pod 启动的空闲程度,强杀 pod 回收资源,进而影响了我们服务的测试进度

(⊙o⊙)...,怎么说的一切都显得很合理,但是一切好像又都不是很合理,所以后面跟平台侧提建议,让他们的测试功能跟业务的测试功能区别开,这样可以规避掉类似的乌龙事件。

3. 碎碎念

要振作起来呀,用知识武装自己,嗯,就加油吧!

  • 什么是弱者和愚蠢的人?

      也就是说,你对他好,他就会把生活所有的不幸都怪到你身上,他却不知道,自己之所以被不公平对待,恰恰是因为她没有能力,自己软弱无能。
    
  • 当你的希望不再寄托于别人身上的时候,你的力量就会回归于自己自身。你的心就会突然静下来,你能够清晰的看到别人和自己的分界线。你会知道别人帮不了自己,我必须要靠我自己才能够爬出这个泥泞。你的心神一旦达到自己身上,你会发现你越来越美,你越来越有魅力。

4. 参考资料

相关推荐
全栈开发圈4 分钟前
新书速览|Java网络爬虫精解与实践
java·开发语言·爬虫
面试鸭9 分钟前
离谱!买个人信息买到网安公司头上???
java·开发语言·职场和发展
小白学大数据9 分钟前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫
Python大数据分析@13 分钟前
python操作CSV和excel,如何来做?
开发语言·python·excel
上海_彭彭38 分钟前
【提效工具开发】Python功能模块执行和 SQL 执行 需求整理
开发语言·python·sql·测试工具·element
lihuhelihu44 分钟前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算
334554321 小时前
element动态表头合并表格
开发语言·javascript·ecmascript
沈询-阿里1 小时前
java-智能识别车牌号_基于spring ai和开源国产大模型_qwen vl
java·开发语言
残月只会敲键盘1 小时前
面相小白的php反序列化漏洞原理剖析
开发语言·php
ac-er88881 小时前
PHP弱类型安全问题
开发语言·安全·php