分布式系统日志排查综合场景
排查背景
在一个大型分布式电商系统中,用户反馈在进行商品结算时出现了报错。系统由多个子系统构成,包括商品管理系统、订单系统、支付系统等,各子系统分布在不同服务器上,且日志文件分散存储。
排查过程
确定当前位置并切换到可能的日志目录
- 首先使用pwd命令查看当前所在目录,确认初始位置;
pwd
- 然后通过和开发团队沟通得知订单系统日志一般存放在
/var/log/order_system目录下,使用cd命令切换过去cd /var/log/order_system
- 使用
ls命令查看该目录下的文件列表,确认日志文件的命名规则,发现有order_20250219.log、order_error.log等文件。ls
查找包含报错关键字的日志
- 用户反馈结算报错时提到了 “payment_failure” 关键字,使用
grep结合cat命令在所有日志文件中递归查找该关键字。cat * | grep -r "payment_failure"
- 结果发现
order_error.log文件中有相关记录,为进一步查看该文件上下文,使用cat和grep的组合,查看关键字前后 5 行内容。cat order_error.log | grep "payment_failure" -C 5
动态实时查看日志
为了捕捉新的报错信息,使用
tail -f命令动态实时查看order_error.log文件。tail -f order_error.log
- 在等待过程中,又有新的用户反馈相同问题,实时日志中出现了更多相关报错记录。运维人员发现报错时间集中在 15:00 - 15:30 之间。
根据时间范围筛选日志
- 使用
sed命令,根据时间范围筛选出 15:00 - 15:30 之间的日志记录。sed -n '/2025-02-19 15:00/,/2025-02-19 15:30/p' order_error.log
- 从筛选结果中发现报错信息指向了支付系统的一个接口调用失败。
检查相关进程状态
- 怀疑是订单系统调用支付系统接口的进程出现问题,使用
ps -ef命令查看当前所有进程,通过管道符|结合grep命令筛选出与订单系统接口调用相关的进程。假设相关进程名为order_payment_interface。ps -ef | grep order_payment_interface
- 发现该进程的 CPU 和内存占用率异常高,可能是导致接口调用失败的原因之一。
进一步排查与解决
- 运维人员根据上述排查结果,联系支付系统团队和开发人员,告知他们订单系统调用支付系统接口时在特定时间出现报错,且相关进程资源占用异常。开发人员根据日志信息和进程状态,进一步深入代码层面排查问题,最终发现是支付系统接口的一个参数校验逻辑在高并发情况下出现了错误,导致订单系统调用失败。修复该问题后,经过测试,用户结算功能恢复正常。
开始(用户反馈支付失败) │ ▼ [阶段1:定位订单系统日志] │ ├─ 命令: pwd: 确认当前所在目录路径,避免误操作其他目录 │ ├─ 命令: cd /var/log/order_system 切换到订单系统日志目录,开发团队提供的标准日志存储位置 │ ├─ 命令: ls -l *.log 列出目录下所有.log文件,确认日志命名规则(如order_error.log) │ ▼ [阶段2:分析订单系统错误日志] │ ├─ 命令: grep -r "payment_failure" /var/log/order_system 递归搜索订单系统目录下的“payment_failure”关键字,定位具体日志文件 │ ├─ 命令: cat /var/log/order_system/order_error.log | grep -C 5 "payment_failure" 查看order_error.log中匹配行的前后5行,分析错误上下文(如订单ID、请求参数) │ ▼ [阶段3:实时监控订单系统日志] │ ├─ 命令: tail -f /var/log/order_system/order_error.log 实时追踪日志尾部更新,观察新产生的支付失败记录 │ ▼ [阶段4:按时间筛选关键日志] │ ├─ 命令: sed -n '/2025-02-19 15:00:00/,/2025-02-19 15:30:00/p' order_error.log > time_filtered.log 提取15:00-15:30的日志到新文件,聚焦高并发时段的异常记录 │ ▼ [阶段5:检查订单系统进程状态] │ ├─ 命令: ps -ef | grep order_payment_interface 筛选订单系统中调用支付接口的进程,检查PID、CPU和内存占用率 │ ▼ [阶段6:关联支付系统问题] │ ├─ 结论: 日志显示支付接口返回“参数校验失败”,进程资源占用异常(如CPU 90%+) 将日志和进程状态提交支付系统团队(示例:内部工单或邮件) │ ▼ [阶段7:支付系统修复] │ ├─ 操作: 支付系统团队修复参数校验逻辑,重启服务 │ └─ 命令: curl -X POST http://payment-system/api/healthcheck 调用支付系统健康检查接口,验证服务恢复 │ ▼ 结束(用户支付流程验证成功)
相关文章:
分布式系统日志排查综合场景
排查背景 在一个大型分布式电商系统中,用户反馈在进行商品结算时出现了报错。系统由多个子系统构成,包括商品管理系统、订单系统、支付系统等,各子系统分布在不同服务器上,且日志文件分散存储。 排查过程 确定当前位置并切换到可…...
android lmkd.rc 介绍
service service lmkd /system/bin/lmkdclass coreuser lmkdgroup lmkd system readproccapabilities DAC_OVERRIDE KILL IPC_LOCK SYS_NICE SYS_RESOURCEcriticalsocket lmkd seqpacketpasscred 0660 system systemtask_profiles ServiceCapacityLow属于核心服务组࿰…...
Android Studio执行Run操作报Couldn‘t terminate previous instance of app错误
步骤1、在项目根目录下build.gradle文件最后添加如下内容 //自定义任务名:assembleAndInstall tasks.register(assembleAndInstall, Exec.class, new Action<Exec>() {Overridevoid execute(Exec exec) {//设置自定义任务组名exec.setGroup(custom task)//当…...
Matlab 双线性插值(二维)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 双线性插值是一种 二维插值方法,用于计算 栅格(Grid) 或 像素点 之间的插值值。它主要用于 图像缩放、旋转、变换 等操作,以在新像素位置估算灰度值或颜色值。 如上图所示,假设存在一个二维离散函数(如图像)…...
1700. 无法吃午餐的学生数量
无法吃午餐的学生数量 题目描述尝试做法推荐做法 题目描述 学校的自助午餐提供圆形和方形的三明治,分别用数字 0 和 1 表示。所有学生站在一个队列里,每个学生要么喜欢圆形的要么喜欢方形的。 餐厅里三明治的数量与学生的数量相同。所有三明治都放在一个…...
uv命令介绍(高性能Python包管理工具,旨在替代pip、pip-tools和virtualenv等传统工具)
文章目录 **主要功能**1. **快速安装和管理 Python 包**2. **生成和管理锁文件 (requirements.lock)**3. **创建虚拟环境**4. **与 poetry 兼容** **核心优势**1. **极快的速度**:基于 Rust 实现,利用多线程和缓存大幅加速依赖解析。2. **轻量且独立**&a…...
杨辉三角形(信息学奥赛一本通-2043)
【题目描述】 例5.11 打印杨辉三角形的前n(2≤n≤20)行。杨辉三角形如下图: 当n5时 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 输出: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 【输入】 输入行数n。 【输出】 输出如题述三角形。n行&#…...
使用easyexcel实现单元格样式设置和下拉框设置
1.单元格样式设置 1.1实体类 public class DemoData {ExcelProperty("PK")private String name;ExcelProperty("年龄")private int age;// 必须提供无参构造方法public DemoData() {}public DemoData(String name, int age) {this.name name;this.age …...
TCP 三次握手四次挥手过程详解
注:本文为 “TCP 的三次握手与四次挥手” 相关文章合辑。 英文引文,机翻未校。 中文引文,未整理去重。 英文引文第二篇,实为国内《稀土掘金技术社区》文章,没检索到原文,此处 “出口转内销” 。 如有内…...
射频相关概念
射频(Radio Frequency, RF) 是电磁波谱中频率范围在 3 kHz 到 300GHz的电磁波,广泛应用于通信、雷达、广播、医疗等领域。其基本原理涉及电磁波的产生、传播、调制与解调,以及射频系统的设计。以下是射频技术的核心要点: 1. 电磁…...
几款可用于绘制工艺原理图的开源框架
一、LogicFlow 由滴滴团队开发的开源流程图框架,支持高度定制的工艺原理图绘制。 • 核心特性: • 提供拖拽式界面和丰富的节点类型(矩形、圆形、多边形等),支持自定义节点形状、样式和交互逻辑。 • 支持插件扩展&am…...
27.卷2的答案
CSP-J离我们不远了,加加油啦! 1.堆排序最坏时间复杂度是? 解析:平时多多练习可知,最坏时间复杂度是O(n log n)。 2.哪条能将s中的数值保留一位,并将第二位四舍五入? 解析:经过试…...
程序编译生成的文件
目录 .i 文件 .s 文件 .o文件 总结 在 C 编程中,.i、.s和 .o 文件是编译过程中生成的不同阶段的文件,它们代表不同的含义: .i 文件 全称 :预处理后的文件(Intermediate File)。 含义:.i文件…...
C++类的基础题(4)
练习1:(简单) 基于如下程序,按要求修改和完善。 #include <iostream> using namespace std; class Student {public: Student(int n,float s):num(n),score(s){} void change(int n,float s) {numn;scores;} void displ…...
浏览器中输入某个地址后发生了什么
首先浏览器会进行DNS解析,将网址中的域名(比如:jcm.com)解析为IP地址。理解:DNS为电话本,域名为名字,IP地址为电话号码;其次浏览器需要和网站服务器建立连接,也就是通过三…...
MindGYM:一个用于增强视觉-语言模型推理能力的合成数据集框架,通过生成自挑战问题来提升模型的多跳推理能力。
2025-03-13,由中山大学和阿里巴巴集团的研究团队提出了MindGYM框架,通过合成自挑战问题来增强视觉-语言模型(VLMs)的推理能力。MindGYM框架通过生成多跳推理问题和结构化课程训练,显著提升了模型在推理深度和广度上的表…...
WPS 搭配 Zotero 插件使用
安装Zotero后,Word自动引入了插件,但WPS却没有,做为WPS的重度用户,这是不行的。 解决方案: 1.找到 Zotero.dotm 一般在安装目录下, 2.然后复制到WPS的startup下 我的目录是:C:\Users\lianq…...
汽车NVH诊断案例 | 纯电车急加速过大弯底盘异响
引言 失去发动机的掩蔽效应后,新能源电车的NVH问题,成为了困扰维修技师新难点。风噪、胎噪、电机高频啸叫等问题更容易车主识别,根源却难以被有效分辨。如何更精准且高效地识别电车NVH问题根源?今天分享的这个案例,内…...
万字长文详解嵌入式电机软件开发
第一章:嵌入式电机概述 1.1 电机类型:选对 “主角” 有多重要? 在嵌入式电机控制系统里,电机就如同故事中的主角,选对了方能使整个剧情顺利推进。不同应用场景对精度、速度、功率以及成本的需求各异,因而了…...
电机控制常见面试问题(十二)
文章目录 一.电机锁相环1.理解锁相环2.电机控制中的锁相环应用3.数字锁相环(DPLL) vs 模拟锁相环(APLL)4.锁相环设计的关键技术挑战5.总结 二、磁链观测1.什么是磁链?2.为什么要观测磁链?3.怎么观测磁链&am…...
卡尔曼滤波算法从理论到实践:在STM32中的嵌入式实现
摘要:卡尔曼滤波(Kalman Filter)是传感器数据融合领域的经典算法,在姿态解算、导航定位等嵌入式场景中广泛应用。本文将从公式推导、代码实现、参数调试三个维度深入解析卡尔曼滤波,并给出基于STM32硬件的完整工程案例…...
添加 ChatGPT/Grok/Gemini 到浏览器搜索引擎
添加 ChatGPT/Grok/Gemini 到浏览器搜索引擎 添加 ChatGPT/Grok/Gemini 到浏览器搜索引擎如何添加步骤 1: 打开浏览器设置步骤 2: 添加新搜索引擎步骤 3: 保存设置 注意事项 添加 ChatGPT/Grok/Gemini 到浏览器搜索引擎 在使用 ChatGPT/Grok/Gemini 进行对话时,每次…...
【SpringMVC】常用注解:@RequestBody
1.作用 用于获取请求实体内容,直接使用得到的是keyvalue&keyvalue的数据。获取请求实体内容不适用get请求。 2.属性 required 描述是否有请求体,默认值为true。当取值为true时,get 请求方式会报错。如果取值为false,get请…...
数学建模之数学模型-3:动态规划
文章目录 动态规划基本概念阶段状态决策策略状态转移方程指标函数最优指标函数 动态规划的求解前向算法后向算法二者比较 应用案例 一种中文分词的动态规划模型摘要引言动态规划的分词模型问题的数学描述消除状态的后效性选择优化条件 算法描述和计算实例算法的效率分析和评价结…...
Amazon Quantum Ledger Database (QLDB):革新数据可信记录的终极解决方案
在数字化浪潮中,企业数据的安全性与可信性成为核心挑战。无论是金融交易的透明审计、供应链的全程追踪,还是医疗记录的真实性验证,如何确保数据不可篡改且可追溯,已成为企业亟待解决的难题。Amazon Quantum Ledger Database (QLDB…...
Navicat SqlServer 设置自增主键
Navicat是一款优秀的数据库管理工具,可以连接很多类型的数据库。使用它可以极大的提高工作效率。 Navicat 不能设置SqlServer自增字段,只能通过sql语句来实现 建表时设置 create table <表名> ( <字段1-主键> int identity (1,1) primar…...
开源后台管理系统推荐
前言 在当今数字化时代,企业和组织对于管理和运营资源的需求日益增加。开源后台管理系统应运而生,为用户提供了一个灵活、可定制化的管理平台。本文将介绍开源后台管理系统的概念和优势,探讨常见的开源后台管理系统,以及如何选择…...
韦伯望远镜的拉格朗日点计算推导过程,包含MATLAB和python运动轨迹仿真代码
研究过程 起源与提出:1687 年牛顿提出 “三体问题”,旨在研究三个可视为质点的天体在相互之间万有引力作用下的运动规律,但因运动方程过于复杂,难以得到完全解。欧拉的贡献1:1767 年,瑞士数学家莱昂哈德・…...
iOS OC匹配多个文字修改颜色和字号
1、传入字符串数组,通过NSMutableAttributedString修改匹配文字 可以根据需要搞成匹配单个字符串 - (NSAttributedString *)applyFontSizeToText:(NSString *)text matchStrings:(NSArray<NSString *> *)matchStrings {NSMutableAttributedString *attribut…...
编程助手学Python--Deepseek对OpenAI的Python库调用GPT-4模型生成对话回复理解
编程助手学Python--Deepseek对OpenAI的Python库调用GPT-4模型生成对话回复理解 1. 导入库2. 设置环境变量3. 打印环境变量4. 配置 OpenAI API5. 打印 API 配置6. 定义对话消息7. 调用 OpenAI API8. 打印 API 响应9. 提取并打印生成的回复10. 代码总结11. 注意事项12. 完整代码示…...
