Spring REST-较长的空闲时间后,第一次调用会花费很长时间(5-10秒)

Luk*_*s S 5 java spring timeout delay

我们在Spring Boot(带有嵌入式tomcat)和spring cloud上运行微服务。这意味着服务发现,常规运行状况检查以及响应这些运行状况检查的服务,...我们还具有用于监视的spring boot管理服务器,我们可以看到所有服务都运行正常。目前仅在测试环境上运行...

我们的某些微服务很少被调用(假设每两天一次),但是仍然定期进行健康检查。当在很长的空闲时间后调用这些服务的REST API时,第一个请求将花费很长的时间来处理。当然,这会导致在请求链中打开断路器并出现错误……在使用spring boot admin(Theads列表,指标)调用不同的端点时,我也会看到这种行为。

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

我的问题是:与嵌入式服务器及其线程池的设置有关吗?还是应该深入研究这些请求所涉及的其他线程池和连接池?对诊断有什么想法吗?

非常感谢

Luk*_*s S 0

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