日常排查问题技巧小结

文章目录

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

1. 写在最前面

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

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

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

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

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

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

  • ……

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

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

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

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

2. 排查消失的程序

2.1 程序崩溃

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

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

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

2.2 系统强杀程序

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

验证:

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

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

    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. 参考资料

  • Linux命令之top命令查看服务器CPU与内存占用_top命令查看内存占用

  • Linux dmesg命令使用方法详解 - michaelchengjl

  • Linux进程被杀掉(OOM killer),查看系统日志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/27891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型日报2024-06-15

大模型日报 2024-06-15 大模型资讯 新技术提升大型语言模型推理能力 摘要: 一种新技术使得像GPT-4这样的大型语言模型能够通过编写Python代码,更准确地解决数值或符号推理任务。 大型语言模型革命性提升蛋白质序列理解 摘要: 研究人员将蛋白质序列与自然语言进行类比…

查看队列资源限额和使用情况

查看队列资源限额和使用情况 背景 LSF中的 limits 配置模块允许管理员很方便地设置集群资源限额,可以在队列、主机对、应用维度对用户使用的资源如slot/core,、任务数/jobs、内存/mem、交换区/swap,以及自定义资源比如许可证进行限制。 问题 在实际工…

JAVA学习01

8个二进制位代表1字节 不能超出这个范围 文档注释 生成api文档 编码:保存数据的过程 解码:读数据 notic: 编码解码遵循的规范是一样的 gbk:中文 ansi代表gbk - 一个中文字占两个字节 udf-8 一个汉字占三个字节

一文了解Spark引擎的优势及应用场景

Spark引擎诞生的背景 Spark的发展历程可以追溯到2009年,由加州大学伯克利分校的AMPLab研究团队发起。成为Apache软件基金会的孵化项目后,于2012年发布了第一个稳定版本。 以下是Spark的主要发展里程碑: 初始版本发布:2010年开发…

2024全新仿麻豆视频苹果cms源码v10影视模板

下载地址:2024全新仿麻豆视频苹果cms源码v10影视模板 高端大气的设计,适合做电影、连续剧、综艺、动漫、微电影、纪录片、海外剧等视频网站

N3 中文文本分类

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊# 前言 前言 前面学习了相关自然语言编码,这周进行相关实战 导入依赖库和设置设备 import torch import torch.nn as nn import torchvision fro…

虚函数机制-动态绑定的应用

虚函数使得程序在运行的时候根据指针指向对象的类型来确定调用哪个函数。 下图中:都为静态绑定。因为在编译器就确定了可以调用的函数 此时当基类指针指向派生类对象时,因为没有virtual关键字,所以在编译阶段就根据指针类型确定了要指向的函…

秋招突击——第四弹——Java的SSN框架快速入门——Maven

文章目录 引言Maven分模块开发与设计分模块开发的过程 依赖管理可选依赖与排除依赖 继承与聚合聚合继承 属性和版本管理属性扩大集中管理的范围版本管理 多环境开发多环境开发 私服简介安装私服资源操作流程分析上传和下载 总结 引言 前一个部分花了太多时间,后续得…

vue2 + echats树状图 点击按钮 展开所有节点/收起所有节点

vue2 echats树状图 点击按钮 展开所有节点/收起所有节点 <template><div><button click"expandAll(isExpanded)">{{ isExpanded ? 一键收起 : 一键展开 }}</button><div ref"echartsTree" style"width: 600px; height:…

【Pandas驯化-02】pd.read_csv读取中文出现error解决方法

【Pandas】驯化-02pd.read_csv读取中文出现error解决方法 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 相关内容文档获取 微信公众号 &…

MEMS:Lecture 17 Noise MDS

讲义 Minimum Detectable Signal (MDS) Minimum Detectable Signal&#xff08;最小可检测信号&#xff09;是指当信号-噪声比&#xff08;Signal-to-Noise Ratio, SNR&#xff09;等于1时的输入信号水平。简单来说&#xff0c;MDS 是一个系统能够分辨出信号存在的最低输入信号…

视频网站下载利器yt-dlp参数详解

yt-dlp 是一个强大的命令行工具&#xff0c;用来下载 YouTube 和其他网站上的视频和音频。它拥有丰富的参数&#xff0c;可以定制下载行为&#xff0c;满足各种需求。本文将详细介绍 yt-dlp 的参数使用。 一、基本参数 -f, –format FORMAT: 指定下载格式&#xff0c;可以用视…

mysql:1205-Lock wait timeout exceeded;try restarting transaction

1.现象 2.分析 使用下面sql在自带数据库的information_schema中查询,注意观察那些长时间开启事务又没完成的进程,然后根据进程的db、操作人、主机、事务开启时间和状态,来排查是什么情况导致的事务未完成(代码异常、执行时间超时等等);我这里是异步作业事务执行时间过长导致的 …

H5拟态个人主页

演示地址&#xff1a;科技语者个人主页 (chgskj.cn) 文末有该项目的源码~ 这张图片的效果你是不是非常想要get同款&#xff1f; 源码就是这个样子 这段HTML代码构建了一个个人主页&#xff0c;结合了CSS样式和JavaScript功能。 下面是对代码的主要组成部分的详细解释&#x…

苏姿丰回忆IBM工作经历 曾参与PS3 Cell处理器开发

AMD首席执行官苏姿丰博士曾在IBM工作了13年&#xff0c;先后担任IBM纽约半导体研发中心的副主管、研发部门主管和CEO特别助理。1998年苹果发布的iMac G3里&#xff0c;使用的PowerPC 750是首个采用铜互连技术的处理器&#xff0c;取代了铝互连技术。此前相关报道中曾提及&#…

深入理解计算机系统 CSAPP 家庭作业6.37

S256 N64时: sumA:这个很简单了,不说了 sumB:如下表. i递增时一直不命中 读到j1,i0 即读a[0][1]时 组0存放的是a[48][0] -a[48][3] 接着读a[1][1]时,组16放的是a[49][0]-a[49][3],j递增之后还是一直不命中 组0:a[0][0]a[16][0]a[32][0]a[48][0]a[0][1]组16:a[1][0]a[17][…

数据库修复实例(航线修复)

修复目标 修复回音群岛 (Echo Isles) 到 赞达拉港 (Port of Zandalar) 的航线 SET TRANSPORT_GUID : 32; SET TRANSPORT_ENTRY : 272677; SET CGUID : 850000;-- Adjust transports DELETE FROM transports WHERE guid TRANSPORT_GUID; INSERT INTO transports (guid, entry…

python的random模块三choices和shuffle()

choices()从给定序列中随机选取元素序列 语法&#xff1a; random.choices(population, weightsNone, *, cum_weightsNone, k1) population&#xff1a;必须是一个序列&#xff0c;可以是列表&#xff0c;元组&#xff0c;字符串等等。表示要从中选取元素的序列。weights&am…

Windows下的zip压缩包版Mysql8.3.0数据迁移到Mysql8.4.0可以用拷贝data文件夹的方式

Windows下的zip压缩包版Mysql8.3.0数据迁移到Mysql8.4.0可以用拷贝data文件夹的方式 拷贝后, 所有账户和数据都是一样的 步骤 停止MySQL服务 net stop mysql 或 sc.exe stop mysql net stop mysqlsc.exe stop mysql卸载 Mysql8.3.0 的服务 mysqld remove 或 mysqld remove m…