线上问题排查的思路

线上问题排查的思路

  线上问题的排查是一个很大的范围,其中包括服务器对应的硬件资源、软件资源、数据库使用情况等情况,下面将一一列举。一般情况下,系统出现事故,都会有事故报告,总结经验,避免下次出现类似的问题。

1.1问题确认和信息收集

  • 问题描述:明确问题的具体表现,如系统响应慢、服务不可用,数据异常等等。
  • 影响范围:确认问题影响用户群体、功能模块或服务。
  • 时间点:确认问题发生的时间,是持续还是间歇。
  • 环境信息:收集系统环境信息,如服务器配置、JDK版本、应用版本。

1.2快速响应

  • 评估严重程度:根据影响范围和业务范围重要性评估问题严重性。
  • 应急措施:如果问题严重,考虑采取紧急措施,如服务降级、流量限制或回滚版本。

1.3日志分析

  • 应用日志:检查应用日志中的错误信息、异常堆栈等。
  • 系统日志:查看操作系统日志,如Linux的/var/log/messages。
  • 中间件日志:检查数据库、缓存、消息中间件的日志。

1.4监控分析数据分析

  • 系统监控:查看CPU、内存、磁盘O/I、网络等系统资源使用情况。
  • JVM监控:分析日志GC日志,堆内存使用、线程状态。
  • 应用性能监控:检查请求响应时间、吞吐量、错误率等指标。

1.5网络分析

  • 网络中断:检查网络连接状态,如防火墙设置、端口开放情况。
  • 网络性能:分析网络延迟、丢包率等指标。

1.6数据库分析

  • 慢查询日志:检查是否存在性能低下的SQL语句。
  • 数据库状态:查看数据库连接数、锁等待情况等
  • 执行计划:分析关键SQL的执行计划是否合理。

1.7代码级别分析

  • 线程转储:获取Java线程转储(Thread Dump)分析线程状态。
  • 堆转储:必要时获取堆转储(Heap Dump)分析内存问题。
  • 代码回顾:检查最近的代码变更,是否引入了新的bug。

1.8性能分析与监控工具使用

  • Profiler: 使用Arthas、JProfiler等工具进行CPU和内存分析。
  • 监控工具: 使用prometheus、grafana、skywalking等工具进行全链路跟踪,。

1.9.复现问题

  • 在测试环境中尝试复现问题,以便更深入地分析。
  • 模拟生产环境的负载和数据量。

1.10 基本原因分析

  • 基于收集到的所有信息,进行根因分析。

1.11 解决方案

  • 制定短期解决方案以快速修复问题。。
  • 规划长期优化方案以防止类似问题再次发生。

1.12 验证和监控

  • 在测试环境验证解决方案的有效性。
  • · 谨慎地将解决方案应用到生产环境。
  • 持续监控系统,确保问题得到彻底解决。

1.13.复盘和总结

  • 编写详细的问题分析报告。
  • 总结经验教训,更新相关文档和最佳实践。

2.实际案例

假设遇到一个Java应用响应变慢的问题:
  1.问题确认:确认响应时间从原来的200ms增加到2000ms。
  2.日志分析:应用日志显示大量GC警告。
  3.监控数据:JVM监控显示老年代内存使用率高,FuGC频繁。
  4.线程分析:Thread Dump显示多个线程在等待数据库连接。
  5.数据库分析:发现数据库连接池耗尽,大量慢查询。
  6.代码审查:最近的代码变更引入了一个无效的数据库连接释放。
  7.根因:由于连接未正确释放,导致连接池耗尽,引发了大量等待,进而导致内存积压和频繁GC8.解决方案:修复连接释放的bug,优化相关SQL,增加连接池大小。
  9.验证和监控:修复后,响应时间恢复正常,GC频率降低。
通过这种系统化的方法,我们能够有效地定位和解决线上问题,同时积累经验以预防未来可能出现的类似问题。

总结

  此篇文章以后,以后出现 的安全线上事故都会写线上报告。以警示自己出现线上问题,这也估计也是有利于我们成长的,所以从本月开始,出现线上事故就编写事故报告,写一篇文章,以博客的形式出现。

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

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

相关文章

“高级Java编程复习指南:深入理解并发编程、JVM优化与分布式系统架构“

我的个人主页 接下来我将方享四道由易到难的编程题,进入我们的JavaSE复习之旅。 1:大小写转换------题目链接 解题思路: 在ASCII码表中,⼤写字⺟A-Z的Ascii码值为65- 90,⼩写字⺟a-z的Ascii码值为97-122。每个字 ⺟…

结构体是否包含特定类型的成员变量

结构体是否包含特定类型的成员变量 在C中,可以使用模板元编程和类型特性(type traits)来判断一个结构体是否包含特定类型的成员变量。这通常通过std::is_member_object_pointer类型特性来实现,它可以用来检查给定的成员指针是否指…

Android基础知识整理一

1. Android基础知识(第一行代码-第2版) 1.1 Android开发特色 1.1.1 系统架构 Linux内核层,系统运行库层,应用框架层,应用层1.1.2 四大组件 活动Activity,服务Service,广播接收器Broadcast Receiver,内容…

shodan5(泷羽sec)

声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章。 笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 这节课旨在扩大自己在网络安全方面的知识面,了解网络安全领域的见闻,了…

前端 Flex 布局语法详解

文章目录 Flex 布局语法详解一、引言二、Flex布局基础1、Flex布局简介2、基本概念 三、容器属性1、flex-direction2、justify-content3、align-items 四、项目属性1、order2、flex3、align-self 五、总结 Flex 布局语法详解 一、引言 在现代网页设计中,布局是一个…

设备租借系统(源码+文档+部署+讲解)

本文将深入解析“设备租借系统”的项目,探究其架构、功能以及技术栈,并分享获取完整源码的途径。 系统概述 本项目名称为设备租借系统,是对企业内部设备进行信息化管理的系统,可以实现设备的借用、归还、状态跟踪等功能&#xff…

使用 PageHelper 在 Spring Boot 项目中实现分页查询

目录 前言1. 项目环境配置1.1 添加 PageHelper 依赖1.2 数据库和 MyBatis 配置 2. 统一的分页响应类3. 使用 PageHelper 实现分页查询3.1 Service 层分页查询实现3.2 PageHelper 分页注意事项 4. 控制层调用示例5. 常见问题与解决方案5.1 java.util.ArrayList cannot be cast t…

【C++】C++移动语义、左值右值、左值引用右值引用、移动构造函数、std::move、移动赋值操作符

二十五、C移动语义、左值和右值、左值引用右值引用、移动构造函数、std::move、移动赋值操作符 本部分讨论一些更高级的C特性:C移动语义。但是讲移动语义之前我们得先了解什么左值右值、左值引用和右值引用。 1、C的左值和右值、左值引用和右值引用左值是有地址的…

如何不封禁UDP协议同时防止UDP攻击

UDP(User Datagram Protocol)协议因其简单、高效的特点,广泛应用于各种网络服务中,如视频流、在线游戏和VoIP等。然而,UDP协议的无连接特性和缺乏内置的安全机制使其容易成为攻击者的靶标,常见的攻击类型包…

User是一个结构体,users := []User{} 和users := []User区别

这两种声明方式有重要的区别: users : []User{}: 创建了一个空的切片,已经初始化长度(len)为 0,容量(cap)为 0可以直接使用 append 操作不是 nil 切片内存已分配 func main() {users : []User{}fmt.Println(users nil) …

【国内中间件厂商排名及四大中间件对比分析】

国内中间件厂商排名 随着新兴技术的涌入,一批国产中间件厂商破土而出,并在短时间内迅速发展,我国中间件市场迎来洗牌,根据市占率,当前我国中间件厂商排名依次为:东方通、宝兰德、中创股份、金蝶天燕、普元…

Android自启动管控

1. 自启动管控需求来源 自启动、关联启动、交叉启动、推送启动等现象的泛滥除了对个人信息保护带来隐患外,还会导致占用过多的系统CPU和内存资源,造成系统卡顿、发热、电池消耗过快;还可能引入一些包含“恶意代码”的进程在后台隐蔽启动&…

使用Python生成随机密码并保存到文件的详尽指南

使用Python生成随机密码并保存到文件的详尽指南 引言 在信息时代,密码安全是保护个人和企业数据的关键。为了确保密码的复杂性和安全性,随机生成密码是一种常见且有效的方法。本文将详细介绍如何使用Python编写一个程序,生成随机密码并将其保存到文件中。内容涵盖环境准备…

C++上机实验|多态性编程练习

1.实验目的 (1)理解多态性的概念。 (2)掌握如何用虚函数实现动态联编 (3)掌握如何利用虚基类。 2.实验内容 设计一个飞机类 plane,由它派生出歼击机类fighter和轰炸机类 bomber,歼击机类fighter 和轰炸机类bomber 又共同派生出歼轰机(多用途战斗机)。利用虚函数和虚基类描述…

ctfshow(328)--XSS漏洞--存储型XSS

Web328 简单阅读一下页面。 是一个登录系统,存在一个用户管理数据库。 那么我们注册一个账号,在账号或者密码中植入HTML恶意代码,当管理员访问用户管理数据库页面时,就会触发我们的恶意代码。 思路 我们向数据库中写入盗取管理员…

Kubernetes的概述与架构

Kubernetes 的概述 Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统,其服务、支持和工具的使用范围广泛。 Kubernetes 这个名字源于…

crond 任务调度 (Linux相关指令:crontab)

相关视频链接 crontab 进行 定时任务 的设置 概述 任务调度:是指系统在某个时间执行的特定的命令或程序 任务调度的分类: 1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等。 2.个别用户可能希望执行某些程序,比如…

408最后冲刺阶段,怎么做题才能考到120+?

C哥专业提供——计软考研院校选择分析专业课备考指南规划 重要性排序如下:真题占据首位,紧随其后的是王道模拟题,王道书与题目则紧随其后,而408统考配套习题(高教版)与之大致相当。 真题,无疑…

uniapp上拉刷新下拉加载

方法一: z-paging 的组件库: show-loading-more-no-more-view"false" 该属性控制是否显示 "加载更多" 或 "没有更多" 的提示。如果设为 false,则不会显示这些提示。如果设为 true,当数据加载完毕…

Java I/O(输入/输出)——针对实习面试

目录 Java I/O(输入/输出)什么是Java I/O流?字节流和字符流有什么区别?什么是缓冲流?为什么要使用缓冲流?Java I/O中的设计模式有哪些?什么是BIO?什么是NIO?什么是AIO&am…