又出现了hs_err_xx.log,是时候启用dump文件了

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 如何启用dump

image.png
测试环境也出现了hs_err log,根据头部信息,就是我们常见的OOM。本来想分析一下segmentation文件,但是没有开启,Failed to write core dump,灰常尴尬。要知道很多时候这些问题可能是无法重现的,因此启用core file很重要。
那么咱们来启用这些重要的配置:

1 启用core files
一旦Java崩溃,操作系统将保存一个core file到硬盘,这个core file包括内存的完整dump。在linux下,core files默认是禁用的。在linux启用需要执行ulimit -c unlimited。如下图(修改前):
image.png
修改后:
image.png
注意:core file会占用大量的磁盘空间,Java heap越大,该文件越大。

2 添加-XX:+HeapDumpOnOutOfMemoryError到JVM参数中
添加这个参数后,当Java应用在遇到OutOfMemoryError后,就会将Java Heap dump到硬盘。可以使用jhat来诊断Java Heap,找出哪些对象占用了大部分的空间,然后检查该对象是否未使用,但是却没有被回收。当然,使用mat分析也可以。

注意:head dump文件也非常大。

例如:在IDEA中添加该JVM 参数
image.png

3 添加-verbosegc到JVM命令行
-verbosegc将会打印Java GC的基本信息。这些日志可以帮助我们判断:

• GC是不是运行时间过长?

• 被回收的内存是不是越来越少

例如:在IDEA中添加该JVM参数
image.png
启动后如果有GC,则会打印类似如下内容:
image.png
4 打印Java版本和JVM标志
执行以下java -version或者加入-XX:+PrintCommandLineFlags(官方文档这里少了一个:号)和-showversion到JVM参数中。

这些信息可以帮助我们在社区中查找已经报告的问题或者Java的BUG。

例如:在IDEA中添加该参数,得到类似如下打印:
image.png
5 使用JMC JMX进行远程监控

6 最后一个是使用JFR商业特性,在开发阶段使用JFR时免费的。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
3月前
|
Java Apache 开发工具
【Azure 事件中心】 org.slf4j.Logger 收集 Event Hub SDK(Java) 输出日志并以文件形式保存
【Azure 事件中心】 org.slf4j.Logger 收集 Event Hub SDK(Java) 输出日志并以文件形式保存
|
8天前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
114 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
8天前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
【赵渝强老师】Oracle的控制文件与归档日志文件
|
6天前
|
Windows Python
如何反向读取Windows系统日志EVTX文件?
以下是如何反向读取Windows系统日志EVTX文件
16 2
|
8天前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
|
1月前
|
监控 Linux 应用服务中间件
系统监控:使用日志文件 journalctl的使用
本文介绍了如何使用`journalctl`命令来监控和查看Linux系统的日志文件,包括查看特定行数、过滤日志级别、实时跟踪日志、按时间段查询日志以及日志轮换和压缩的配置。
42 2
系统监控:使用日志文件 journalctl的使用
|
1月前
|
SQL 数据库
为什么 SQL 日志文件很大,我应该如何处理?
为什么 SQL 日志文件很大,我应该如何处理?
|
1月前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
38 1
|
1月前
|
存储 监控 固态存储
如何监控和优化 WAL 日志文件的存储空间使用?
如何监控和优化 WAL 日志文件的存储空间使用?
|
1月前
|
SQL 数据库
为什么SQL日志文件很大,该如何处理?
为什么SQL日志文件很大,该如何处理?