【发布时间】:2022-08-15 03:20:43
【问题描述】:
问题
如何获得滚动记录到磁盘,用最大年龄?
语境
当我的服务器出现问题时,我希望能够转储前几个小时的分析信息并对其进行分析,以了解出了什么问题。
- 我不知道什么时候会变坏,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。其中有很多这样的文件,因为没有强制执行年龄上限。我究竟做错了什么?
-
你为什么不做一个删除旧文件的 cron 作业?
-
@Kayaman 提出解决方法对解决根本原因没有多大帮助。
-
提出包括
// what does this do even?在内的问题并不能充分发挥我的客户支持质量。 -
@Kayaman cron 作业增加了系统的复杂性。需要记住、维护和记录的额外内容会导致系统脆弱。此外,这是一种简单的行为,人们认为这是 JFR 的大多数用户所期望的并且实际上是需要的,因此很可能存在“本机”解决方案。
-
1. 这就是我在这里发帖的目的。 2. 不必粗鲁。我的问题很清楚,简洁,精心策划。你的挫败感是没有根据的。 3. 我没有找到关于
defaultrecording含义的文档。你?
标签: java jvm jvm-hotspot jfr jmc