JVM / Spring启动响应时间

时间:2016-08-05 00:22:22

标签: java spring spring-boot jvm

我目前正在Spring Boot中重写一个Ruby on Rails Web应用程序。此举的很大一部分是为了表现。

在开发应用程序的同时,当我在IntelliJ中运行时,第一个响应时间通常约为1秒,我认为是JVM启动,刷新后它会跳转到300毫秒〜然后150毫秒再进行4-5个请求,之后它大部分时间都在50-75毫秒。随机,虽然稍后我会再次获得150毫秒的响应。

作为一名JVM新手,我想知道在不同的响应时间里有哪些因素在起作用?哪个更接近我在生产中可以预期的标准“热”响应时间?我意识到我不太可能在我的本地开发机器上准确描述生产性能,但是我想了解上面看到的变化,所以我至少可以更好地衡量一下我的增量变化会有什么影响。

1 个答案:

答案 0 :(得分:1)

  

作为一名JVM新手,我想知道在不同的响应时间里有哪些因素在起作用?

启动:

  • jit warmup
  • 作为应用程序一部分的延迟初始化
  • GC需要确定一些堆大小
稳定状态:

  • GC暂停
  • 应用程序行为,例如缓存条目时不时到期
  • 变化负荷
  • 由于采取了一些不常见的路径而导致JIT去优化/重新编译
  • 热CPU限制,尤其是笔记本电脑但并非专用于笔记本电脑

对于服务器应用程序,您应该忽略加速行为并关注稳定状态。并且猜测问题可能无济于事,测量是最重要的。