线上Java应用排查和诊断规范

线上OOM排障实战:从hprof文件定位内存泄漏元凶 本文详细介绍了线上OOM(OutOfMemoryError)的排障实战,从如何获取hprof内存快照到使用JVM工具进行深度分析。通过Eclipse MAT等工具定位内存泄漏元凶,并提供了从诊断到修复的完整闭环方案,帮助开发者有效应对生产环境中的内存问题。 阅读详情


@郑昀 整理


标准做法一:OOM触发HeadpDump

目的:

OOM发生时,输出堆栈快照文件,供研发人员分析。

在JVM中,如果98%的时间是用于 GC 且可用的 Heap size 不足2%的时候,将抛出 OOM 异常。

配置操作:

Resin/Tomcat 配置文件里追加 -XX:+HeapDumpOnOutOfMemoryError ,当 OutOfMemoryException 错误发生时,会自动生成 Heap Dump 文件。

同时配置 -XX:HeapDumpPath 指定快照文件的实际路径。

日志分析:

Heap Dump文件的分析,可以使用 Eclipse Memory Analyzer tool(MAT) 分析。

 

标准做法二:系统负载高触发ThreadDump

目的:

系统负载大于10时,调用 jstack 命令,输出 resin 线程快照,供研发人员分析。

配置操作:

一分钟扫描一次。如果系统的一分钟负载值(load1)大于10,或者80端口的连接数大于80时,进行打印。

日志分析:

Thread Dump文件的分析,可以使用 Thread Dump Analyzer(TDA)分析。

 

可选做法三:年老代使用率高触发HeapDump

目的:

Java工程的 OU/OC 到报警阈值时,调用 jmap 命令,输出堆栈快照,供研发人员分析。

OC 当前年老代空间容量。Current old space capacity (KB).

OU 年老代利用情况。Old space utilization (KB).

配置操作:

Nagios 监控到特定工程的 OU/OC 大于80%时,自动执行命令:jmap –dump:file={filename},format=b pid

日志分析:

多个Heap Dump文件的对照,使用 VisualVM 的比较内存快照功能。

 

标准做法四:默认开启GC打印

目的:

打印 GC 详细信息,供研发人员分析。

-XX:+PrintGC:输出形式:[GC 118250K->113543K(130112K), 0.0094143 secs] [Full GC 121376K->10414K(130112K), 0.0650971 secs]

-XX:+PrintGCDetails:输出形式:[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs] [GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]

-XX:+PrintGCTimeStamps:输出形式:11.851: [GC 98328K->93620K(130112K), 0.0082960 secs]

-Xloggc:filename:输出GC信息到日志文件。

配置操作:

Resin/Tomcat 配置文件里,增加如下参数:

<jvm-arg>-XX:+PrintGCTimeStamps</jvm-arg>

<jvm-arg>-XX:+PrintGCDetails</jvm-arg>

<jvm-arg>-Xloggc:/data/application/%ProjectName%/logs/gc.log</jvm-arg>

 

郑昀 2013

-over-

 


赠图一枚:

http://ww3.sinaimg.cn/mw1024/6544eee9gw1e8xznmq4p5j20vg0istb0.jpg

 

 

分类:  Java
1
0
« 上一篇: [慢查优化]建索引时注意字段选择性 & 范围查询注意组合索引的字段顺序
» 下一篇: Web开发基本准则-55实录-Web访问安全
Java字符集问题全面排查指南:诊断与解决乱码问题 本文系统介绍了Java开发中字符集问题的诊断与解决方法,涵盖基础理论、常见乱码模式识别和实战工具。主要内容包括: 字符集基础:解析字符集与编码的区别,对比UTF-8、GBK等常见字符集特性,介绍Java关键类如Charset和String的内部编码机制。 诊断方法:提供乱码诊断流程图,分析输入/输出/存储环节的问题;总结典型乱码表现与对应原因,如"锟斤拷"通常因UTF-8被误认为GBK。 实战工具: 提供编码检测工具类,通过字节分析和匹配度计算识别正确编码 展示HTTP乱码排查代码,自动 阅读详情

相关推荐

Java在线诊断工具Arthas快速入门与使用

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

BADAO_LIUMANG_QIZHI的博客 1017

Arthas(Java 应用诊断利器)

Arthas 是由`Alibaba`开源的`Java`监控诊断工具,通过全局视角**实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等**,大大提升线上问题排查效率。

Lifelong learning 6399

系统内存和CPU使用率告警监控程序,根据传入参数阀值记录告警信息入库发送短信

############################################## #功能:系统内存和CPU使用率告警监控程序,根据传入参数阀值记录告警信息入库发送短信 #参数:内存使用率阀值、CPU使用率阀值、硬盘使用率阀值 #依赖脚本:数据库操作脚本dbExecurteSQL.sh #数据库操作脚本资源:https://download.youkuaiyun.com/upload/10975286 #时间:2019-01-30 ############################################## 功能: 1.用参数设置内存CPU核硬盘使用率告警阀值 2.获取时间字符串 3.获取获得IP地址 4.写数据库函数 5.监控内存 6.监控CPU 7.监控硬盘 8.打印监测结果 9.按IP地址和脚本文件名创建带日期的日志文件

线上java JVM问题排查

作者:霞落满天 第一部分 是我以前公司的一则正式案例: 第二部分 是我另一个博客上写的主要是最近发现大家问的比较多就写了此文 第一部分 线上真实故障案例 下面是一个老系统,代码写的有点问题导致出现这样一个JVM占比过高的问题,正常情况下也就是CPU负载不高的时候21:00左右的,也有30万,但是再多一点30几万就是阈值,就会出现堆积。 这个队列一直是增长的快。 这个是...

深度Java 1万+

如何使用windows搭建一个公网ftp/sftp服务器

在有公网ip的情况下,使用windows系统搭建一个ftp/sftp服务器会带来很多的方便,可以实现远程移动端的一键式访问,对于文件的备份、多设备的共享都十分的方便。然而网上许多的教程都是基于windows自带的iis搭建一个局域网ftp服务器,然而在搭建好后,我想要通过端口映射的方式实现在外网访问时,却发现连接不上的问题,感觉可能是因为windows家庭版的原因导致的。因此在查阅很多资料之后终于找到了一个公网ftp/sftp服务器的搭建方式,实测可用。这里把流程记录一下,做一个备忘录,也方便大家搭建。

weixin_43354138的博客 1万+

RabbitMq安装

本文详细介绍了在CentOS7系统上离线部署RabbitMQ4.3.2的完整流程。主要内容包括:1)准备RabbitMQ安装包、Erlang依赖和socat网络工具;2)安装系统编译依赖并编译安装Erlang;3)部署RabbitMQ服务,配置环境变量和socat依赖;4)启用Web管理插件并创建管理员账号;5)配置防火墙放行端口;6)设置Systemd开机自启服务;7)提供常用运维命令。文档特别强调离线部署注意事项,包括socat依赖、版本兼容性、账号安全及主机名配置等问题,为生产环境部署提供完整解决方案

sinat_25821779的博客 324

Java 线上问题排查思路与工具使用

MAT(Memory Analyzer Tool),一个基于 Eclipse 的内存分析工具,是一个快速、功能丰富的 JAVA heap 分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。使用内存分析工具从众多的对象中进行分析,快速的计算出在内存中对象的占用大小,看看是谁阻止了垃圾收集器的回收工作,并可以通过报表直观的查看到可能造成这种结果的对象。右侧的饼图显示当前快照中最大的对象。

2401_85013615的博客 1070

cmu15445(2024fall) project 2

project 2比p1难度要更大,代码量更大且涉及的知识更多,实现中出现的bug更多,好在是最后全部解决了。我最大的收获在于对于多线程编程的理解更深入了,实际发现解决了多个多线程相关的bug,学会了更多多线程下debug的技巧方法,也见识了更多多线程的bug情况。在之后可以更系统的学习一下多线程编程。同时学会实现B+树也是需要掌握的基础。

Jerome_Yi的博客 1563

五万字保姆级教程,从零开始搭建一个简单的java线上项目

通过这篇文章,将会带着大家从零开始,做一个线上教育网站,功能可能比较少,但思路比较清晰,完全学明白后,大家可以根据自己的需求添加自己需要的功能,做自己喜欢的网站,那么让我们一起开始吧!

weixin_64753607的博客 4635

A-Level经济例题解析及练习Opportunity Cost

例题Question: Opportunity CostYou are selling your 1996 Mustang.&nbsp; You have already spent $1000 on repairs.&nbsp;At the last minute, the transmission dies.&nbsp; You can pay $600 to have it repaired, or sell the car “as is.”In each of the fol

Alevel3的博客 747

企业级 Token 中转架构设计:高并发、多模型、费用监控一次搞定

摘要:本文针对企业级AI开发中的多模型接口混乱、高并发稳定性差及Token费用失控等痛点,提出一套2026年企业级Token中转架构解决方案。该方案采用五层分层设计(接入层、网关层、调度层、服务层、存储层),实现多模型统一接口、智能路由、高并发限流容错及精细化成本监控。核心功能包括:异构模型标准化接入、动态路由策略(场景/成本/负载/容灾)、多级限流熔断机制、全链路Token计费与安全防封体系(指纹清洗、IP池隔离)。通过分层解耦与模块化设计,企业可降低50%成本、提升99%稳定性,并避免封号风险。文章还提

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 149

java应用诊断,线上Java应用排查和诊断规范

标准做法一:OOM触发HeadpDump目的:OOM发生时,输出堆栈快照文件,供研发人员分析。在JVM中,如果98%的时间是用于 GC 且可用的 Heap size 不足2%的时候,将抛出 OOM 异常。配置操作:Resin/Tomcat 配置文件里追加-XX:+HeapDumpOnOutOfMemoryError,当OutOfMemoryException错误发生时,会自动生成Heap Dump...

weixin_30453491的博客 133

6、核函数与再生核希尔伯特空间:原理、应用与实践

本文系统介绍了核函数与再生核希尔伯特空间(RKHS)的理论基础、核心性质及其在机器学习和信号处理中的广泛应用。文章从核方法的优势出发,阐述了其在非线性建模、正则化和算法核化方面的独特价值,并深入探讨了正定核、Mercer定理、表示定理等关键理论。通过构建多种标准核与工程专用核,展示了核函数的设计灵活性。结合支持向量回归(SVR)模型与多个MATLAB示例,详细说明了核方法的实际应用流程与操作技巧。最后,总结了核方法的应用领域、未来发展方向及学习实践建议,为读者提供了一套完整的理论与实践指南。

z2a3b4c5d的博客 146

Java内存泄漏排查工具

有次我们系统泄漏,就是靠MAT发现某个缓存对象持有了一万多个业务对象,占用了近2G内存。命令实时查看内存变化,命令在线生成堆转储,甚至可以用命令监控方法调用频次。有次我们发现某个查询方法被疯狂调用,导致大量结果集对象堆积,就是靠Arthas实时定位的。有次我们遇到Web容器线程池持有临时对象,每次请求都泄漏几百K,运行几天就把内存耗尽了。有次发现String对象占用了不可思议的内存,顺藤摸瓜找到了日志组件配置错误导致的全量日志缓存问题。CPU和内存的联合分析也很强大,能追溯到具体哪行代码分配了大量内存。

2509_93942294的博客 277

YOLOv11改进 | Neck篇 | 独创HFPN利用分层特征融合块HFFB模块融合多层次特征改进yolov11(全网独家创新)

本文给大家带来的最新改进是利用分层特征融合块HFFB创新yolov11的neck部分我称之为HFPN,这个模块可以融合局部特征、全局特征、中间特征将三种特征融合在一起辅助yolov11进行检测,经过我的设计分为三种可以针对大目标、小目标、标准目标的检测方式均不同,大家可以根据自己的数据集进行不同的选择,本文的内容为我独家创新。YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备目录一、本文介绍二、原理介绍三、核心代码四、添加方法4.1 修改一4.2 修改二4.3 修改三4.4 修改四。

Snu77的博客 5220

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

排查线上问题的一般解决思路

线上问题的排查和解决是运维和开发团队的一项关键任务。当系统遇到性能下降、功能异常、安全漏洞或稳定性问题时,快速定位并解决问题是保证系统正常运行的关键。本文将详细介绍排查线上问题的一般解决思路,帮助读者掌握排查和解决问题的技能。通过本文的详细介绍,您应对如何排查和解决线上问题有了全面的了解。我们讨论了问题分类、排查思路、工具和技术、具体案例分析和预防措施等方面。解决线上问题需要全面的分析和实践,不断探索和优化,才能构建高效、可靠的系统。

lssffy的博客 1806

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

解密阿里线上问题诊断工具Arthas和jvm-sandbox

大纲目录 这篇文章是之前学习Arthas和jvm-sandbox的一些心得和总结,希望能帮助到大家。本文字较多,可以根据目录进行对应的阅读。 背景:现在的问题所在? Arthas: Arthas能帮助你干什么?各种命令原理是什么? jvm-sandbox: jvm-sandbox能帮助你干什么? 实现原理?自己如何实现一个? 常见的一些问题? 1.背景 2018年已过,但是在过去的一年里面开源...

weixin_34001430的博客 1125

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: jvm调节
下一篇: JDBC驱动自身问题引发的FullGC
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值