引用 https://zhuanlan.zhihu.com/p/529350757 最近我们有一台服务器上的Java进程总是在运行个两三天后就无法响应请求了,具体现象如下: 请求业务返回状态码502,查看进程还在,意味着Java进程假死,无法响应请求了: 该Java进程占比CPU较高,高达132.8%. 所以再次发生的时候我摘了这台服务器,保留现场排查该Java应用程序存在什么问题. 使用top命令查看服务器整体运行情况: 可以看到PID为14760的Java进程CPU占比132.8%,内存占用…
概述 背景 是不是在实际开发工作当中经常碰到自己写的代码在开发.测试环境行云流水稳得一笔,可一到线上就经常不是缺这个就是少那个反正就是一顿报错抽风似的,线上调试代码又很麻烦,让人头疼得抓狂:而且debug不一定是最高效的方法,遇到线上问题不能debug了怎么办.原先我们Java中我们常用分析问题一般是使用JDK自带或第三方的分析工具如jstat.jmap.jstack. jconsole.visualvm.Java Mission Control.MAT等.但此刻的你没有看错,还有一款神器Art…
Java架构师线上问题排查,这些命令程序员一定用得到! 线上问题排查,以下场景,你遇到过吗? 一.了解机器连接数情况 问题:1.2.3.4的sshd的监听端口是22,如何统计1.2.3.4的sshd服务各种连接状态(TIME_WAIT/ CLOSE_WAIT/ ESTABLISHED)的连接数. 常见方法: · netstat -n | grep 1.2.3.4:22 | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ · nets…
一.Arthas简介 Arthas是Alibaba开源的Java诊断工具,功能很强大,它是通过Agent方式来连接运行的Java进程.主要通过交互式来完成功能. https://arthas.aliyun.com/doc/stack.html 首先贴出官方文档,自己使用也不多,主要用于一次线上问题排查 二.运行 java -jar arthas-boot.jar ,运行Arthas 选择要粘附的进程,输入编号即可 使用以下两个命令其中一个查看java程序的进程号ps -efjps 备注:也可以通…
前言 之前线上有过一两次OOM的问题,但是每次定位问题都有点手足无措的感觉,刚好利用星期天,以测试环境为模版来学习一下Linux常用的几个排查问题的命令. 也可以帮助自己在以后的工作中快速的排查线上问题. jmap命令 jmap -heap pid 输出当前进程 JVM 堆新生代.老年代.持久代等请情况,GC 使用的算法等信息 jmap -histo:live {pid} | head -n 10 输出当前进程内存中所有对象包含的大小 jmap -dump:format=b,file=/usr/…
线上问题排查神器 Arthas 之前介绍过 BTrace,线上问题排查神器 BTrace 的使用,也说它是线上问题排查神器.都是神器,但今天这个也很厉害,是不是更厉害不好说,但是使用起来非常简单.如果你用 BTrace 的话,需要事先写好探测脚本,然后上传到需要排查问题的服务器,然后执行命令.比方说获取某个方法的参数.返回值.异常等.而 Athas 方便在不用写脚本,直接用命令行方式就可以,使用它就好像在用安装在服务器上的各种工具一样,比如 top.jps.jmap 等. 他们背后的逻辑都是字节…
JVM 线上故障排查基本操作 CPU 飚高 线上 CPU 飚高问题大家应该都遇到过,那么如何定位问题呢? 思路:首先找到 CPU 飚高的那个 Java 进程,因为你的服务器会有多个 JVM 进程.然后找到那个进程中的 “问题线程”,最后根据线程堆栈信息找到问题代码.最后对代码进行排查. 如何操作呢? 通过 top 命令找到 CPU 消耗最高的进程,并记住进程 ID. 再次通过 top -Hp [进程 ID] 找到 CPU 消耗最高的线程 ID,并记住线程 ID. 通过 JDK 提供的 jstac…
JVM 线上故障排查 Linux 1.1 CPU 1.2 内存 1.3 存储 1.4 网络 一.CPU 飚高 寻找原因 二.内存问题排查 三.一般排查问题的方法 四.应用场景举例 4.1 怎么查看某个Java进程里面占用CPU最高的一个线程具体信息? 4.2 统计每种网络状态的数量 4.3 怎么查看哪个进程在用swap 原文地址: 微信公众号: 莫那鲁道 芋道源码:JVM 线上故障排查基本操作 掘金:小姐姐味道:作为高级Java,你应该了解的Linux知识 Linux,关注的是四个元素:内存,c…
BTrace简介 GitHub地址:BTrace 下载地址:v1.3.11.3 官方使用教程:Btrace使用教程 使用场景 BTrace 是一个事后工具,所谓事后工具就是在服务已经上线了,但是发现存在以下问题的时候,可以用 BTrace. 比如哪些方法执行太慢,例如监控执行时间超过1s的方法 查看哪些方法调用了 System.gc() ,调用栈是怎样的 查看方法参数或对象属性 哪些方法发生了异常 多说一点,为了更好解决问题,最好还要配合事前准备和进行中监控,事前准备就是埋点嘛,在一些可能出现问…
记一次线上bug排查,与各位共同探讨. 概述:使用quartz做的定时任务,正式生产环境有个任务延迟了1小时之久才触发.在这一小时里各种排查找不出问题,直到延迟时间结束了,该任务才珊珊触发.原因主要就是后台有几个5分钟一刷的定时任务,调度器不停的调度后台任务,阻塞了别的任务,出现了问题. 本文主要目的:1.记录排查过程(思路): 2. 分析quartz的线程调度规则: 3. 针对本问题的相关解决方案: 排查过程:1…