【发布时间】:2019-10-25 19:21:46
【问题描述】:
我创建了一个 Spring Boot Web 应用程序并将其部署到 tomcat 容器中。
应用程序使用异步连接连接到mongoDB。为此,我正在使用 mongodb-driver-async 库。
在启动时一切正常。但是一旦负载增加,它就会在数据库连接中显示以下异常:
org.springframework.web.context.request.async.AsyncRequestTimeoutException: null
at org.springframework.web.context.request.async.TimeoutDeferredResultProcessingInterceptor.handleTimeout(TimeoutDeferredResultProcessingInterceptor.java:42)
at org.springframework.web.context.request.async.DeferredResultInterceptorChain.triggerAfterTimeout(DeferredResultInterceptorChain.java:75)
at org.springframework.web.context.request.async.WebAsyncManager$5.run(WebAsyncManager.java:392)
at org.springframework.web.context.request.async.StandardServletAsyncWebRequest.onTimeout(StandardServletAsyncWebRequest.java:143)
at org.apache.catalina.core.AsyncListenerWrapper.fireOnTimeout(AsyncListenerWrapper.java:44)
at org.apache.catalina.core.AsyncContextImpl.timeout(AsyncContextImpl.java:131)
at org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:157)
我正在使用以下版本的软件:
- 春季启动 -> 1.5.4.RELEASE
- Tomcat(作为独立二进制安装)-> apache-tomcat-8.5.37
- Mongo DB 版本:v3.4.10
- mongodb-driver-async: 3.4.2
一旦我重新启动 tomcat 服务,一切都会开始正常工作。
请帮忙,这个问题的根本原因可能是什么。
P.S.:我正在使用 DeferredResult 和 CompletableFuture 来创建异步 REST API。
我也尝试在应用程序中使用spring.mvc.async.request-timeout 并在tomcat 中配置asynTimeout。但仍然出现同样的错误。
【问题讨论】:
-
您可以尝试将 spring.mvc.async.request-timeout 设置为较高的值,看看是否有帮助。你知道哪个手术需要很长时间吗?
-
是的,我已经试过了,但是没有用
-
您知道是哪些操作导致了问题吗?
-
在所有操作中
-
这可能与此线程有关吗? stackoverflow.com/questions/39856198/…
标签: java spring mongodb spring-boot tomcat8.5