线上问题排查流程

问题排查

  • 针对各种常见的线上问题,梳理下排查思路。

业务问题

  • 线上问题大多数时候都是业务问题引发的问题,当线上环境绝大多数请求都是正常,当有部分或者某一个用户有问题,此时怎么针对性的排查
  • 在当前微服务体系下,一般都会有分布式链路追踪系统 ,以及ELK日志系统,我们完全可以通过监控平台去找到问题的点:
  • 异常日志的抓取

在这里插入图片描述

  • 此时我们可以通过日志追踪得到当前用户的请求信息:

在这里插入图片描述

  • 利用Arths的watch命令监控对应异常接口,通过日志得到对应的参数,通过Dubbo的invoke 命令模拟线上用户的请求,从而复现问题,解决问题

非业务问题

  • Arthas工具是一个很好的在线定位问题的工具,安装简单
  • 在非业务问题上的排查流程,必然先检查CPU, 内存, 线程等计算机核心资源
  • 我们通过dashboard命令可以得到本服务中对应的信息,并且每隔几秒会获取最新数据。
    • 可以在线程监控区域看到:线程id, 名称,状态,CPU占用情况,是否守护线程等
    • 内存嘻嘻:堆内存,Eden区,Survivor区,老年代,方法区
    • 机器情况

在这里插入图片描述

  • 如上我们可以得到对应的线程信息关键的线程id

  • 接着可以通过Thread thread_id 查询某个线程的执行堆栈,甚至都不用dump

  • 还有反编译jad,在线查询对应类的源码信息,方便问题排查

  • 但是大多线上事故都不会有时间去临时查找,对应生成系统,能在线定位时间不多,

  • 我会按如下步骤进行:

    • 按顺序重启有问题的机器,看是否能解决问题,
    • 在此同时,在最后重启的哪台机器上先执行jmap -dump指令将java堆的线程情况保存下来
    • 机器重启后如果不能恢复,会回退到之前版本,保证线上业务正常
    • 将保存下的dump文件导入到本地
    • 用jdk自带的 java visualVM工具将dump文件导入
    • visualVM可以通过可视化界面查看 dump 文件中记录所使用的类,每个类中对象以及各种当前环境下具体内容线下分析具体原因后在去解决。

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

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

相关文章

springboot超详细教程_CG原画插画教程:超详细线稿教程

艺学绘小编收集整理了超详细线稿教程今天我们从起稿开始1. 用圆表示出人物的头部、胸腔和骨盆,分别画出头部的十字线和身体的中线,表示头和身体的朝向。用“火柴棍”表示四肢的动作形态。▼2. 根据圆和十字线画出脸的轮廓,再在身体骨架上画出…

Asp.Net.Core WebApi 版本控制

前言在后端Api的开发过程中,无法避免的会遇到接口迭代的过程,如何保证新老接口的共存和接口的向前的兼容呢,这时候就需要对Api进行版本的控制,那如何优雅的控制Api的版本呢?开始Microsoft.AspNetCore.Mvc.Versioning 是一个微软官方推出的一个用于管理Api版本的包,配…

[Java基础]字节缓冲流

字节缓冲输出流: package InstreamPack;import java.io.BufferedOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets;public class BufferStreamDemo01 {public s…

matlab 判断鼠标按下,Matlab:如何通过使用回调来获取当前鼠标在点击位置

I googled near and far, but couldnt get an example of how you associate a callback to the click event in matlab. Can someone show me an example?解决方案Define the WindowButtonDownFcn of your figure callback using the set command and an callbackfunction ta…

Python 推导,内含,迭代器

Python语法–推导或内含 list comprehension操作可以将一个序列类型的数据集推导出另一个序列类型的数据集: 典型的情况: for i in aiterator利用推导获取一个平方数列表 square [i * i for i in range(1, 11)]以上情况同如下循环 for i in range(…

用asp.net core结合fastdfs打造分布式文件存储系统

最近被安排开发文件存储微服务,要求是能够通过配置来无缝切换我们公司内部研发的文件存储系统,FastDFS,MongDb GridFS,阿里云OSS,腾讯云OSS等。根据任务紧急度暂时先完成了通过配置来无缝切换内部文件系统以及FastDFS。…

仅仅有人物没背景的图片怎么弄_五分钟写作课 人物篇 人物的出场是个关键时刻...

我看过不少故事,人物出场了,说了几句话,然后离开,读者知道他是某人的爸爸,学校的老师,某个企业的老板,除了这些定为之外,他自己是怎样的性格?怎样的形象呢?没…

数据结构与算法一篇帮助你吃下KMP算法

模式匹配 什么是模式匹配,我们用一个案例来说明: 当S “s1,s2,s3,s4 …sn” T“t1,t2,t3,t4 … tn” 在字符串S中寻找T字符串的过程就是模式匹配的过程,T就说模式串,S是主串 实现方案: 暴力破解,逐字符判…

在远程 CSM 课程中体验线上工作坊

4.11 日周六,我参与了由 Bob 老师组织讲授的一期 Certified Scrum Master(即 CSM)课程,从中收获颇丰,特记于此,与君分享。CSM 通常是现场授课,但本次由于疫情的限制导致人们不得不尽可能减少外出…

python中的max_row_Openpyxl max_row和max_column错误地报告了一个较大的figu

我的查询是处理作为Im开发的解析脚本的一部分的函数。我试图编写一个python函数来查找与excel中匹配值对应的列号。excel是用openpyxl动态创建的,它有第一行(来自第三列)标题,每个标题跨4列合并为一行。在我的后续函数中,我正在分析一些要添加…

数据结构与算法--力扣108题将有序数组转换为二叉搜索树

力扣108提将有序数组转换为二叉搜索树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫,因此有此次…

C#验证IP是否为局域网地址的三种方法

C#验证IP是否为局域网地址的三种方法前一阵子有【广州.NET群】的客户问起这个问题,说他们需要验证客户输入的网站是否为局域网。其实局域网的 IP并没有确定的定义,只要是局域网中,即可设置为任何一个 IP。但确实存在一个 内网保留地址的定义&…

扫地机器人隔板_【扫地机器人使用】_摘要频道_什么值得买

至于扫地机的单边刷好还是双边刷好,这个也是我原本有的问题,后来经过好友解答才知道,单边刷其实并不比双边刷效率低。对于带拖地功能的扫地机而言,更好的应该是单边刷。因为边刷主要的功能是将一些边缘角落的垃圾扫出来让主刷清洁…

数据结构与算法--力扣109题将有序双向链表转换为二叉搜索树

将有序数组转换为二叉搜索树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫,因此有此次总结&…

[Java基础]字符缓冲流

代码如下: package CopyJavaPack01;import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException;public class CopyJavaDemo04 {public static void main(String[] args) throws IOException {BufferedWriter bw new BufferedWriter(new FileWri…

在C#中使用RESTful API的几种好方法

在C#中使用RESTful API的几种好方法原文来自互联网,由长沙DotNET技术社区编译。 通过Web开发的路径,您发现自己迟早需要处理外部API(应用程序编程接口)。在本文中,我的目标是列出在C#项目中使用…