programing

반복적인 비동기 요청 시간 초과Spring Boot 관리 로그에서 예외 발생

javamemo 2023. 7. 4. 21:37
반응형

반복적인 비동기 요청 시간 초과Spring Boot 관리 로그에서 예외 발생

현재 테스트 목적으로 로컬 컴퓨터에서 Spring Boot Admin을 실행하고 있는데 다음 오류가 계속 발생하고 있습니다.애플리케이션 자체는 정상적으로 작동하는 것처럼 보이지만, 제 로그는 이러한 오류로 가득 차 있습니다.왜 그런지는 모르겠지만,

 org.springframework.web.context.request.async.AsyncRequestTimeoutException: null
    at org.springframework.web.context.request.async.TimeoutDeferredResultProcessingInterceptor.handleTimeout(TimeoutDeferredResultProcessingInterceptor.java:42) ~[spring-web-4.3.3.RELEASE.jar!/:4.3.3.RELEASE]
    at org.springframework.web.context.request.async.DeferredResultInterceptorChain.triggerAfterTimeout(DeferredResultInterceptorChain.java:75) ~[spring-web-4.3.3.RELEASE.jar!/:4.3.3.RELEASE]
    at org.springframework.web.context.request.async.WebAsyncManager$5.run(WebAsyncManager.java:392) ~[spring-web-4.3.3.RELEASE.jar!/:4.3.3.RELEASE]
    at org.springframework.web.context.request.async.StandardServletAsyncWebRequest.onTimeout(StandardServletAsyncWebRequest.java:143) ~[spring-web-4.3.3.RELEASE.jar!/:4.3.3.RELEASE]
    at org.apache.catalina.core.AsyncListenerWrapper.fireOnTimeout(AsyncListenerWrapper.java:44) ~[tomcat-embed-core-8.5.5.jar!/:8.5.5]
    at org.apache.catalina.core.AsyncContextImpl.timeout(AsyncContextImpl.java:131) ~[tomcat-embed-core-8.5.5.jar!/:8.5.5]
    at org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:157) ~[tomcat-embed-core-8.5.5.jar!/:8.5.5]
    at org.apache.coyote.AbstractProcessor.dispatch(AbstractProcessor.java:228) [tomcat-embed-core-8.5.5.jar!/:8.5.5]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53) [tomcat-embed-core-8.5.5.jar!/:8.5.5]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802) [tomcat-embed-core-8.5.5.jar!/:8.5.5]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410) [tomcat-embed-core-8.5.5.jar!/:8.5.5]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.5.jar!/:8.5.5]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_40]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_40]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.5.jar!/:8.5.5]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40]

나도 비슷한 오류가 있었습니다. 당신의 application.yml에서 이 속성을 시도해 보세요.

spring:
  mvc:
    async:
      request-timeout: -1  

또는 스프링 부트 없이 추가

    @Override
    public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
        long timeout = 5 * 60 * 1000;// for example 5 minutes
        WebMvcConfigurer.super.configureAsyncSupport(configurer);
        configurer.setDefaultTimeout(timeout);
    }

WebMvcConfigurer를 구현하는 구성 클래스로

사용하는 경우ComplatebleFuture<Any>의 반환 형식으로@RestController기능 및 Tomcat을 백업 컨테이너로 사용합니다.그런 다음 커넥터 커스터마이저를 스프링 컨텍스트에 등록해야 합니다. 그러면 비동기 연결 시간 초과가 조정됩니다.왜냐면org.apache.catalina.connector.Connector고유한 속성이 있습니다.protected long asyncTimeout = 30000;비동기 요청의 시간 초과로 사용됩니다.

@Configuration
class TomcatAsyncConfig {
    @Bean
    fun asyncTimeoutCustomize(): TomcatConnectorCustomizer =
        TomcatConnectorCustomizer { connector -> connector.asyncTimeout = 180000 }
}

값 수정spring.mvc.async.request-timeout: -1 또는server.tomcat.connection-timeout안 됩니다.

응용 프로그램 수준에서 시간 초과를 구성하는 대신 특정 구독에 대한 시간 초과를 구성할 수 있습니다.

    @GetMapping(value = "/subscription")
    public SseEmitter subscription() {
        SseEmitter emitter = new SseEmitter((long) (60000 * 5));
        return emitter;
    }

그래서 위의 발췌문에서, 저는 이 특정한 연결을 위해 5분을 주었습니다.나머지 연결은 여전히 서버 기본 시간 제한을 사용합니다.

언급URL : https://stackoverflow.com/questions/39856198/recurring-asyncrequesttimeoutexception-in-spring-boot-admin-log

반응형