Rest Controller方法结束与Controller Advice

时间:2017-04-08 03:01:14

标签: java spring rest spring-boot

将应用程序部署到新环境后,我遇到了一个非常严重的问题。应用程序本身是一个Spring Boot REST API服务。在我的REST控制器方法退出后,它应该进入一个Controller Advice类,在那里我做一些后处理(使用@ControllerAdvice注释)。但是,根据日志,我看到约有5%的请求超时,调查显示Controller方法结束与Controller建议之间存在15分钟的差距:

Illustration of Timeout

日志1-5属于Controller方法。之后,等待30秒后,您将看到Zuul超时超时。然后,15分钟后,您将看到此特定线程的日志再次开始运行,这些日志适用于Controller Advice。

对于为什么会发生这种情况,我真的没想完了。差距似乎是一个非常一致的15分钟(给予或采取10-15秒)。考虑到Spring / Boot的架构,有没有人有类似的经历或知道会发生什么?

1 个答案:

答案 0 :(得分:0)

有两种类型的超时:

  • 建立套接字之前的连接超时
  • 对话框进行后的读取超时

我认为你在这里达到了读取超时。您可以通过使用RestClient创建JUnit集成测试并更改超时参数来测试此理论。测试的行为可能会揭示问题。

    SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
    requestFactory.setConnectTimeout(5000);
    requestFactory.setReadTimeout(5000);
    RestTemplate restTemplate = new RestTemplate(requestFactory);
相关问题