Java线上问题排查思路

news2024/11/28 19:00:17

1、Java 服务常见问题

Java 服务的线上问题从系统表象来看大致可分成两大类: 系统环境异常、业务服务异常。

  • 系统环境异常:主要从CPU、内存、磁盘、网络四个方面考虑。比如:CPU 占用率过高、CPU 上下文切换频率次数较高、系统可用内存长期处于较低值、磁盘满了、磁盘 I/O 过于频繁、网络流量异常等等。
  • 业务服务异常:主要是业务服务自身运行出现异常。比如:服务发生内存泄漏导致频繁进行 Full GC、 PV 量过高导致服务崩溃、服务调用耗时异常、线程死锁、多线程并发问题等等。

2、如何定位问题

2.1 Linux 系统的性能分析

(1)CPU 性能分析:使用 top 命令,能够实时显示系统中各个进程的资源占用状况。
在这里插入图片描述
相关参数说明:

PID : 进程id
USER : 进程所有者
PR : 进程优先级
NI : nice值。负值表示高优先级,正值表示低优先级
VIRT : 进程使用的虚拟内存总量,单位 kb。VIRT=SWAP+RES
RES : 进程使用的、未被换出的物理内存大小,单位 kb。RES=CODE+DATA
SHR : 共享内存大小,单位 kb
S : 进程状态。D=不可中断的睡眠状态;R=运行;S=睡眠;T=跟踪 / 停止;Z=僵尸进程
%CPU : 上次更新到现在的 CPU 时间占用百分比
%MEM : 进程使用的物理内存百分比
TIME+ : 进程使用的 CPU 时间总计,单位 1/100 秒
COMMAND : 进程名称

(2)内存使用情况分析:使用 free命令,来显示的当前内存的使用情况。
在这里插入图片描述
相关参数说明:

total:内存总数
used:已经使用的内存数
free:空闲的内存数
shared:当前已经废弃不用, 总是 0
buff/cache:缓存内存数
available:可用的内存数

(3)磁盘使用情况分析:使用 df 或者 du 命令,查看磁盘使用情况。
在这里插入图片描述
相关参数说明:

Filesystem:文件系统位于哪个分区
1K-blocks:文件系统的总大小,默认以 KB 为单位
Used:用掉的硬盘空间大小
Available:剩余的硬盘空间大小
Use%:硬盘空间使用率
Mounted on:文件系统的挂载点,也就是硬盘挂载的目录位置

(4)网络连接状态分析:使用 netstat 命令,查看系统中网络连接状态信息。
常用参数:
-a:显示本机所有连接和监听的端口
-n:不解析域名
-t:显示tcp协议连接
-u:显示udp协议连接
-p:显示连接对应的PID与程序名
在这里插入图片描述
相关参数说明:

Proto:连接协议的种类
Recv-Q:接收到字节数
Send-Q:从本服务器,发出去的字节数
Local Address:本地的IP地址,可以是IP,也可以是主机名
Foreign Address:远程主机的IP 地址
State:网络连接状态
PID/Program name:进程id以及进程名称

网络连接状态各值的含义:

CLOSED(关闭):指网络连接尚未建立,也没有终止。
LISTEN(监听):指服务器在等待客户端发起连接请求。
ESTABLISHED:表示连接已经建立,数据可以通过该连接传输。
CLOSE_WAIT:表示连接已关闭,但是连接方还没有释放资源,需要等待连接方释放资源后才会进入CLOSED状态。
TIME_WAIT:表示连接在建立之后,发送端发送数据包后等待接收端响应的时间。如果接收端没有响应,发送端会进入TIME_WAIT状态,等待一段时间后才会进入CLOSED状态。
DESTROY:表示连接已经被销毁,无法进行任何数据传输。

(5)vmstat:是 Virtual Meomory Statistics(虚拟内存统计)的缩写 , 是实时系统监控工具。
在这里插入图片描述
参数详解:
vmstat 后面第一个参数是采样的时间间隔数单位是秒,第二个参数是采样的次数。

-- procs
r:表示处于运行队列中(正在运行或等待运行)的进程数。
b:表示处于不可中断睡眠状态的进程数。
-- memory
swpd:表示被换出到交换空间的内存大小(单位:KB)。
free:表示空闲内存大小(单位:KB)。
buff:表示用作缓冲区的内存大小(单位:KB)。
cache:表示用作缓存的内存大小(单位:KB)。
-- swap
si:表示每秒从磁盘读入交换区的数据量(单位:KB)。
so:表示每秒写入到磁盘的交换区数据量(单位:KB)。
-- I/O
bi:表示每秒从块设备读入的数据量(单位:块,一般为 512 字节)。
bo:表示每秒向块设备写入的数据量(单位:块,一般为 512 字节)。
-- system
in:表示每秒产生的中断数。
cs:表示每秒上下文切换的次数。
-- CPU
us:表示用户空间占用 CPU 时间的百分比。
sy:表示内核空间占用 CPU 时间的百分比。
id:表示空闲 CPU 时间的百分比。
wa:表示等待 I/O 的 CPU 时间百分比。
st:表示被虚拟机偷走的 CPU 时间的百分比。
2.2 JVM 性能分析

(1)jps:查询当前机器所有 JAVA 进程信息;

jps [ options ] [ hostid ]
options是命令行参数,hostid指特定主机,可以是ip地址、域名, 也可以指定具体协议和端口
options参数说明:
-q:只输出PID。
-m:输出传递给 main 方法的参数。对于嵌入式 JVM,输出可能为空。
-l:输出应用程序主类的完整包名或应用程序 JAR 文件的完整路径名。
-v:输出传递给 JVM 的参数。

(2)jmap:输出某个 java 进程内存情况;

jmap [options] pid
options参数说明:
-heap:查看Java堆的详细信息,包括堆的总大小、已用大小、空闲大小、对象数量等。
-histo:查看Java堆中各个类的实例数量、内存占用大小等信息,可用于查找内存泄漏等问题。
-permstat:查看永久代内存的使用情况。
-F:无法连接Java进程时强制执行,但可能会导致进程暂停。

(3)jstack:打印某个 Java 线程的线程栈信息;

jstack [ options ] pid
options参数说明:
-F:没有响应时,强制打印一个堆栈转储
-l:打印关于锁的其他信息,比如拥有的java.util.concurrent ownable同步器的列表
-m:打印包含Java和本机C/ C++帧的混合模式堆栈跟踪
-h:打印帮助信息

(4)jstat:查看堆内存各部分的使用量,以及加载类的数量;

jstat [option vmid [interval[s|ms] [count]] ]
参数说明:
option:需要监控的数据类型。如:-gc表示监控垃圾收集相关的统计信息;-gccapacity:监控各个区域的大小。
vmid:Java虚拟机的标识符,通常是进程ID。
interval:采样间隔,单位可以是秒(s)或毫秒(ms)。
count:采样次数。

(5)jinfo:用于查看 jvm 的配置参数;

jinfo [option] pid
参数说明:
-flags:显示全部的配置参数
-flag name:输出对应名称的参数
-flag [+|-]name:开启或者关闭对应名称的参数
-sysprops:输出系统属性

3、日志分析

3.1、GC 日志分析

GC 日志是用于定位问题重要的日志信息,在 java 应用的启动参数中增加-XX:+PrintGCDetails可以输出 GC 的详细日志,根据GC日志可以看出jvm垃圾回收的相关信息。无论是 minor GC 或者是 Full GC,我们主要关注 GC 回收的耗时以及频率。

3.2、业务日志分析

可以根据系统出错的大概时间,找到服务器上该时间段的日志,再根据日志去分析具体出错的位置。业务日志除了关注系统异常与业务异常之外,还要关注服务执行耗时情况,耗时过长的服务调用如果没有熔断等机制,很容易导致应用性能下降或服务不可用。

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

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

相关文章

工业产线看板的智能化应用

在数字化浪潮兴起之前,许多制造企业主要依赖手工生产和传统的生产管理方法,生产数据的收集和分析主要依赖于人工,导致信息传递滞后、生产过程不透明,难以及时调整生产计划。在传统的生产环境中,生产过程的各个环节缺乏…

留言板(Mybatis连接数据库版)

目录 1.添加Mybatis和SQL的依赖 2.建立数据库和需要的表 3.对应表中的字段,补充Java对象 4.对代码进行逻辑分层 5.后端逻辑代码 之前的项目实例【基于Spring MVC的前后端交互案例及应用分层的实现】https://blog.csdn.net/weixin_67793092/article/details/134…

K8S结合Prometheus构建监控系统

一、Prometheus简介 Prometheus 是一个开源的系统监控和警报工具,用于收集、存储和查询时间序列数据。它专注于监控应用程序和基础设施的性能和状态,并提供丰富的查询语言和灵活的告警机制1、Prometheus基本介绍 数据模型:Prometheus 使用时…

Spring Boot笔记1

1. SpringBoot简介 1.1. 原有Spring优缺点分析 1.1.1. Spring的优点分析 Spring是Java企业版(Java Enterprise Edition,javeEE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业…

20231227在Firefly的AIO-3399J开发板的Android11的挖掘机的DTS配置单后摄像头ov13850

20231227在Firefly的AIO-3399J开发板的Android11的挖掘机的DTS配置单后摄像头ov13850 2023/12/27 18:40 1、简略步骤: rootrootrootroot-X99-Turbo:~/3TB$ cat Android11.0.tar.bz2.a* > Android11.0.tar.bz2 rootrootrootroot-X99-Turbo:~/3TB$ tar jxvf Androi…

阿里云30个公共云地域、89个可用区、5个金融云和政务云地域

阿里云基础设施目前已面向全球四大洲,公共云地域开服运营30个公共云地域、89个可用区,此外还拥有5个金融云、政务云地域,并且致力于持续的新地域规划和建设,从而更好的满足用户多样化的业务和场景需求。伴随着基础设施的加速投入和…

ARM CCA机密计算软件架构之内存加密上下文(MEC)

内存加密上下文(MEC) 内存加密上下文是与内存区域相关联的加密配置,由MMU分配。 MEC是Arm Realm Management Extension(RME)的扩展。RME系统架构要求对Realm、Secure和Root PAS进行加密。用于每个PAS的加密密钥、调整或加密上下文在该PAS内是全局的。例如,对于Realm PA…

Kubernetes 学习总结(41)—— 云原生容器网络详解

背景 随着网络技术的发展,网络的虚拟化程度越来越高,特别是云原生网络,叠加了物理网络、虚机网络和容器网络,数据包在网络 OSI 七层网络模型、TCP/IP 五层网络模型的不同网络层进行封包、转发和解包。网络数据包跨主机网络、容器…

12.28网络流,残留网络,增广路,最大流最小割定理

网络流 概念 是指在一个每条边都有容量的有向图分配流,使一条边的流量不会超过它的容量。通常在运筹学中,有向图称为网络。顶点称为节点而边称为弧。一道流必须匹配一个结点的进出的流量相同的限制,除非这是一个源点──有较多向外的流&…

【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现

【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现 1 题目 赛题 B DNA 存储中的序列聚类与比对 近年来,随着新互联网设备的大量涌入和对其服务需求的指数级增长,越来越多的数据信息被产生与收集。预计到 2021 年&#xf…

AI-ChatGPTCopilot

ChatGPT chatGPT免费网站列表:GitHub - LiLittleCat/awesome-free-chatgpt: 🆓免费的 ChatGPT 镜像网站列表,持续更新。List of free ChatGPT mirror sites, continuously updated. Copilot 智能生成代码工具 安装步骤 - 登录 github&am…

Unity Shader 实现X光效果

Unity Shader 实现X光效果 Unity Shader 实现实物遮挡外轮廓发光效果第五人格黎明杀机火炬之光 实现方案操作实现立体感优化总结源码 Unity Shader 实现实物遮挡外轮廓发光效果 之前看过《火炬之光》、《黎明杀机》、《第五人格》等不少的游戏里面人物被建筑物遮挡呈现出不同的…

SpingBoot的项目实战--模拟电商【2.登录】

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于SpringBoot电商项目的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.功能需求 二.代码编写 …

3D展2D数学原理

今年早些时候,我为 MAKE 杂志写了一篇教程,介绍如何制作视频游戏角色的毛绒动物。 该技术采用给定的角色 3D 模型及其纹理,并以编程方式生成缝纫图案。 虽然我已经编写了一般摘要并将源代码上传到 GitHub,但我在这里编写了对使这一…

新版ONENET的物联网环境调节系统(esp32+onenet+微信小程序)

新版ONENET的物联网环境调节系统(esp32onenet微信小程序) 好久没用onenet突然发现它大更新了,现在都是使用新版的物联网开放平台,只有老用户还有老版的多协议接入,新用户是没有的,所以我顺便更新一下新的开…

百度CTO王海峰:文心一言用户规模破1亿

“文心一言用户规模突破1亿。”12月28日,百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰在第十届WAVE SUMMIT深度学习开发者大会上宣布。会上,王海峰以《文心加飞桨,翩然赴星河》为题作了主旨演讲,分享了飞桨和文…

微软为 Android 用户推出了人工智能助手 Copilot 应用程序

微软为 Android 用户推出了人工智能助手 Copilot 应用程序 - 与 ChatGPT 类似,它包括聊天机器人功能和 DALL-E 3 图像生成 - 该应用程序包括免费访问 OpenAI 的 GPT-4 模型,这是 ChatGPT 中的付费功能 - 发布微软将 Bing Chat 更名为 Copilot 您是否尝试…

Linux 线程概念

文章目录 前言线程的概念线程的操作操作的原理补充与说明 前言 ① 函数的具体说明被放在补充与说明部分 ② 只说些基础概念和函数使用 线程的概念 网络回答:Linux 线程是指在 Linux 操作系统中创建和管理的轻量级执行单元。线程是进程的一部分,与进程…

易趋产品升级(EasyTrack 11_V1.3) | 集成飞书、WPS、个性化设置,增强团队协作和用户体验

企业在项目管理过程中,经常会遇到项目信息同步不及时、沟通障碍以及管理软件使用不便捷等难题,导致团队协作效率低下。这种情况下,如果使用了多个办公软件(如:钉钉、企业微信、项目管理软件等),…

【DC-DC】这是一款半亮 高亮 瀑闪的LED降压恒流刹车灯线路图

1产品描述 AP2402 是一款 PWM 工作模式,高效率、外围简单、内置功率管,适用于 5-100V输入的高精度降压 LED 恒流驱动芯片。输出功率可达 15W,电流 1.5A。AP2402 可实现三段功能切换,通过MODE1/2/3 切换三种功能模式:全亮&#xf…