Spring REST - 在较长的空闲时间之后,第一次调用需要很长时间(5-10秒)

时间:2017-07-28 07:52:17

标签: java spring timeout delay

我们在spring boot(带有嵌入式tomcat)和spring cloud上运行微服务。它意味着服务发现,定期健康检查和响应这些健康检查的服务,......我们还有用于监控的spring boot管理服务器,我们可以看到所有服务都运行正常。目前仅在测试环境中运行...

我们的一些微服务很少被调用(让我们假设每两天一次)但是仍然会定期进行健康检查。在这么长的空闲时间之后调用这些服务的REST api时,第一个请求需要很长时间才能处理。它当然会导致请求链中出现断路器和错误......我在使用spring boot admin(Theads list,Metrics)调用不同的端点时也会看到这种行为。

作为总结,我在调用spring boot admim指标,线程信息,环境信息或使用Hikari数据源调用数据库的调用或者服务尝试通过smtp服务器发送电子邮件的调用中看到了这种行为

我的问题是: 它是否与嵌入式服务器及其线程池的设置有关? 或者我应该深入了解这些请求所触及的其他线程池和连接池? 任何诊断想法?

非常感谢

1 个答案:

答案 0 :(得分:0)

问题是没有足够的RAM来覆盖这些应用程序的整个堆……错误的设置应用于多个虚拟机。实际上堆的一部分正在交换。固定堆和RAM大小后,该问题消失了。