Java 弹簧休息-在较长的空闲时间后,第一次呼叫需要很长时间(5-10秒)
我们正在SpringBoot(带有嵌入式tomcat)和SpringCloud上运行微服务。它意味着服务发现、定期运行状况检查和响应这些运行状况检查的服务。。。我们还有SpringBoot管理服务器用于监控,我们可以看到所有服务都正常运行。当前仅在测试环境上运行 我们的一些微服务很少被调用(假设每两天调用一次),但是仍然有定期的健康检查。当这些服务的RESTAPI在这么长的空闲时间后被调用时,第一个请求需要很长的时间来处理。它当然会导致请求链中断路器的断开和错误。。。我在使用SpringBootAdmin调用不同的端点时也看到了这种行为(Theads列表,Metrics) 作为总结,我在spring boot Admin metrics、threads info、environment info的调用中看到了这种行为,或者在使用Hikari数据源调用数据库的调用中,或者在aservice试图通过smtp服务器发送电子邮件的调用中看到了这种行为 我的问题是: 这和嵌入式服务器及其线程池的设置有关吗? 或者我应该深入研究这些请求涉及的其他线程池和连接池吗? 对诊断有什么想法吗Java 弹簧休息-在较长的空闲时间后,第一次呼叫需要很长时间(5-10秒),java,spring,timeout,delay,Java,Spring,Timeout,Delay,我们正在SpringBoot(带有嵌入式tomcat)和SpringCloud上运行微服务。它意味着服务发现、定期运行状况检查和响应这些运行状况检查的服务。。。我们还有SpringBoot管理服务器用于监控,我们可以看到所有服务都正常运行。当前仅在测试环境上运行 我们的一些微服务很少被调用(假设每两天调用一次),但是仍然有定期的健康检查。当这些服务的RESTAPI在这么长的空闲时间后被调用时,第一个请求需要很长的时间来处理。它当然会导致请求链中断路器的断开和错误。。。我在使用SpringBoot
非常感谢问题是没有足够的RAM来覆盖这些应用程序的整个堆。。。应用于多个虚拟机的设置错误。堆的一部分实际上是交换的。当堆和RAM大小固定时,问题就消失了。我在一个私人项目中遇到过类似的问题。。。看起来,spring会懒散地初始化REST组件,这解释了当您第一次调用Resource时等待时间更长的原因是,您是对的,有一些懒散的初始化,但这不是我的意思。这是关于在服务器启动后已经执行了几次的调用,然后在长时间空闲后再次调用(并且花费了很长时间)