问题
如何实现一个带有最大年龄限制的滚动记录并将其保存到磁盘中?
背景
当服务器出现故障时,我想能够倾泻出之前几个小时的分析信息,并进行分析,以了解出了什么问题。
- 由于我不知道何时会发生故障,因此JDK应该持续将事件保存到磁盘上。
- 由于服务器不经常重新启动,为避免文件无限增长,我需要设置某种容量限制(可以是按年龄或大小)。
因此,换句话说,我想让JDK将记录连续保存到磁盘中,但删除旧的文件/记录,使总量保持在某个阈值以下(按年龄或大小)。
为此,以下是版本Oracle JDK 1.8.0_144
提供的选项:
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder
-XX:StartFlightRecording
name=<foo-bar>
-XX:FlightRecorderOptions
defaultrecording=true // what does this do even?
disk=true
maxage=1h // this is what I thought would solve my problem!
repository=<path-to-where-I-want-the-recording>
maxchunksize=5M
我本以为设置maxage=1h
只会在磁盘上保留最近1小时的记录,但不是这样!现在已经过去了1天,文件仍没有被限制。
同时,maxchunksize
似乎起作用了。各种.jfr
文件大约有5M。由于年龄限制没有得到执行,因此有很多这样的文件。
我做错了什么?
defaultrecording
含义的文档。你有吗?