又出现了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日志并进行多维度分析。
目录
相关文章
|
27天前
|
Java Apache 开发工具
【Azure 事件中心】 org.slf4j.Logger 收集 Event Hub SDK(Java) 输出日志并以文件形式保存
【Azure 事件中心】 org.slf4j.Logger 收集 Event Hub SDK(Java) 输出日志并以文件形式保存
|
1月前
|
运维 安全 Linux
【揭秘】如何轻松掌控Linux系统命脉?——一场探索日志文件奥秘的旅程,带你洞悉系统背后的故事!
【8月更文挑战第21天】日志文件对Linux系统至关重要,记录着包括应用行为、组件状态和安全事件在内的系统活动,如同系统的“黑匣子”。掌握日志查看技巧是系统管理的基础技能,有助于快速诊断问题。常用命令包括`cat`、`tail`和`grep`等,可用于查看如`/var/log/messages`和`/var/log/auth.log`等系统日志文件,以及特定应用的日志。`journalctl`则用于查看systemd服务日志。此外,`logrotate`工具可管理日志文件的滚动和归档,确保系统高效运行。
36 4
|
10天前
|
消息中间件 存储 监控
Kafka的logs目录下的文件都是什么日志?
Kafka的logs目录下的文件都是什么日志?
30 11
|
27天前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
25天前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
30天前
|
存储 安全 Linux
在Linux中,日志文件通常存储在哪些目录?
在Linux中,日志文件通常存储在哪些目录?
|
30天前
|
Ubuntu Linux Apache
在Linux中,如何使用logrotate命令管理日志文件?
在Linux中,如何使用logrotate命令管理日志文件?
|
28天前
|
监控 安全 Linux
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
|
29天前
|
运维 监控 Ubuntu
在Linux中,如何查看系统日志文件?
在Linux中,如何查看系统日志文件?
|
1月前
|
Linux
在Linux中,有一堆日志文件,如何删除7天前的日志文件?
在Linux中,有一堆日志文件,如何删除7天前的日志文件?