`
zhengyun_ustc
  • 浏览: 83077 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

@郑昀 整理


标准做法一: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

 

分享到:
评论
1 楼 magicyang919 2014-01-14  
挺好,学习了。

相关推荐

    Java线上故障排查方案(2).pdf

    本文档围绕Java线上故障排查提供了详尽的方案和知识点,覆盖了从问题定位到解决方案的多个方面。 首先,了解Java线上常见问题的分类是非常重要的。在生产环境中,问题可大致分为系统异常和业务异常两大类。系统异常...

    Java线上故障排查方案.pdf

    通过这些方法和工具的应用,Java线上故障排查变得有迹可循,大大提高了问题的解决效率。在实际操作中,结合应用的具体情况和异常表现,灵活运用这些工具和方法,可以有效地找到问题根源并解决它。

    JAVA 线上故障排查完整套路,从 CPU、磁盘、内存、网络、GC 一条龙!.docx

    本文档将详细介绍 Java 线上故障排查的完整套路,涵盖 CPU、磁盘、内存、网络和 GC 等多个方面的故障排查方法。 一、CPU 故障排查 CPU 故障排查是 Java 线上故障排查的重要一步。我们可以使用 jstack 工具来分析 ...

    Java诊断利器Arthas排查问题实践.pptx

    * 快速诊断和解决问题: Arthas 可以快速诊断和解决 Java 应用程序中的问题,提高开发效率和服务可用性。 * 丰富的功能特性: Arthas 提供了丰富的功能特性,包括查看类加载情况、反编译类、热更新类、分析方法调用...

    java线上诊断工具arthas

    Arthas是阿里巴巴开源的一款强大的Java线上诊断工具,它的出现极大地便利了开发者在生产环境中对应用进行问题排查和性能分析。Arthas的核心理念是帮助开发者在不重启服务的情况下,实时观察和诊断Java应用程序,从而...

    btrace java线上debug神器

    总之,BTrace作为Java线上调试的神器,为开发者提供了高效的问题排查手段,但同时也需要我们合理、谨慎地运用,确保不影响系统的稳定性和性能。熟悉并掌握BTrace,无疑能提升我们在生产环境中的故障排查能力。

    Java线上监控 软件包

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

    Arthas线上应用诊断利器概述.pdf

    Arthas线上应用诊断利器概述 Arthas是一款阿里巴巴开源的Java诊断工具,自2018年9月开源以来,已经拥有了19.7K星星的支持。 Arthas提供了强大的诊断功能,可以实时查看应用程序的运行情况,诊断问题,优化性能。 ...

    Arthas基本使用_线上热部署_arthas项目在线诊断_

    综上所述,Arthas是Java开发者的得力助手,它提供的线上热部署和项目在线诊断功能大大简化了问题排查和性能优化的过程。通过深入学习和实践Arthas,开发者可以更高效地维护和优化Java应用程序。

    java在线问题排查利器之Btrace&Greys1

    1. Btrace 是一个开源的Java诊断工具,它利用了Java的Instrumentation API和Hotswap技术,可以在运行时动态地插入和修改字节码,从而实现对Java应用程序的实时监控。Btrace允许开发者编写Java脚本来定义需要监控的...

    Alibaba Java Diagnostic Tool ArthasAlibaba Java诊断利器Arthas.zip

    3. **执行命令**:连接成功后,可以根据需求输入对应的Arthas命令进行诊断和调试。 ### 应用场景 1. **性能优化**:通过`trace`命令追踪耗时操作,找到性能瓶颈。 2. **异常定位**:使用`tdump`查看异常堆栈信息,...

    java线上故障分析-线程dump,堆内存分析

    通过熟练掌握这些工具和技术,开发者能够更有效地诊断和解决线上环境中遇到的各种问题,确保系统的稳定运行。未来,随着云计算、微服务架构的普及,对故障分析能力的要求将更高,开发者需不断学习和实践,以应对更加...

    Arthas - Java 诊断利器.docx

    Arthas的灵活性和强大功能使其成为Java开发者必备的工具之一,它能有效提升问题排查的效率,确保应用程序的稳定运行。通过熟练掌握Arthas,开发者可以在面对复杂问题时更加从容,及时解决线上故障,保障服务的高可用...

    线上问题调查常用命令

    在处理Java应用程序的性能问题时,还需要掌握一些针对JVM本身的诊断工具和技术: - **jstat**:用于获取JVM的运行时统计信息,包括堆内存使用情况、GC活动等。 - **jmap**:生成对象和类的内存使用快照,帮助定位...

    java问题快速定位

    根据给定文件中的标题、描述、标签以及部分内容,本文将详细介绍如何通过使用特定的Java工具如`jstat`, `jstack`, 和其他相关工具来进行Java线上系统的问题排查及快速定位。 ### java问题快速定位 #### Java线上...

    Java异常诊断greys-anatomy.zip

    很早的时候,我们使用BTrace排查问题,在感叹BTrace的强大之余,也曾好几次将线上系统折腾挂掉。2012年淘宝的聚石写了HouseMD,将 常用的几个Btrace脚本整合在一起形成一个独立风格的应用,但其核心代码用的是Scala...

Global site tag (gtag.js) - Google Analytics