【问题标题】:Spring Boot BufferedApplicationStartup drained after first requestSpring Boot BufferedApplicationStartup 在第一次请求后耗尽
【发布时间】:2020-12-22 17:59:51
【问题描述】:

我正在使用 Spring 5.3 / Spring Boot 2.4 的全新 ApplicationStartup recording featureBufferedApplicationStartup(仅由 SB 2.4 提供)。

然而,

  • 在第一次访问 /startup 端点时,我似乎获得了所有启动事件,但是
  • 在对端点的后续调用中,我只收到 3 个(正好是 3 个)新事件。

这是否记录在某处?是否可配置?如果第一次通话后数据没有丢失,那就太好了。还是bug?

【问题讨论】:

  • 嗨。这是一个有趣的话题。您能否向我们提供您的代码以便进行一些本地测试? BR
  • @RoarS。代码是这样的:``` @SpringBootApplication public class MyApp { public static void main(String[] args) { SpringApplication app = new SpringApplication(MyApp .class); app.setApplicationStartup(new BufferingApplicationStartup(2048));应用程序运行(参数); } } ```

标签: spring spring-boot spring-boot-actuator


【解决方案1】:

这是we are draining the buffer 在通过网络发送启动事件之前的预期行为。 HTTP POST 方法的使用也表明该方法并非没有副作用。

这方面可以更好地记录,所以feel free to create an issue

这里的目标是尽快从这些缓冲事件中释放内存,因为可能有很多。如果您希望记录启动事件并获取更多信息(如 GC 和类加载),Java Flight Recorder 实现也很有趣。

一旦应用程序可用,大多数启动事件都应该在那里。如果您的应用程序具有惰性组件,则在调用它们之前您将无法获取这些数据,这可能在应用程序运行时的任何时间发生。

【讨论】:

猜你喜欢
  • 2018-11-28
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
  • 2013-08-22
  • 2019-03-08
  • 2015-11-06
  • 2018-01-06
  • 1970-01-01
相关资源
最近更新 更多