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

标签 java spring timeout delay

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

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

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

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

非常感谢

最佳答案

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

关于java - Spring REST - 在更长的空闲时间之后,第一次调用需要很长时间(5-10 秒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45367857/

相关文章:

java - @GeoPointField Elasticsearch 的错误映射

python - 在 Python 中是否可以在函数调用中设置几个参数的最后一个参数?

timeout - 是否有用于 sleep /等待/超时的 Bamboo 任务?

java - JEE7中如何在JNDI树中指定EJB bean名称

java - android fragment 的最佳实践?

java - 如何从 Controller 发送多个数组列表到ajax成功函数

php - 如何使用 .htaccess 扩展 Apache-FastCGI-PHP 应用程序的请求/连接超时

java - JSF ajax 和自定义转换器

java - 将数据从 CSV 保存到 Realm

java - "object references an unsaved transient instance"双向一对一