[SPRING] 봄 스케줄러가 예기치 않게 멈 춥니 다.
SPRING봄 스케줄러가 예기치 않게 멈 춥니 다.
Tomcat 6에는 @Scheduled를 통해 여러 예약 서비스를 사용하는 Spring 3 웹 응용 프로그램이 있습니다 (주로 밤마다 실행되는 작업에 사용). 이제 때때로 (2 개월 정도에 한 번) 스케쥴러 스레드가 작동을 멈추는 경우는 드물기 때문에 다음날 밤에는 아무 작업도 실행되지 않습니다. 로그 파일에는 예외 또는 로깅 항목이 없습니다.
아무도 이것이 왜 일어나고 있는지 실마리가 있습니까? 또는이 문제에 대한 추가 정보를 얻는 방법?
응용 프로그램 내에서 이러한 상황을 감지하고 스케줄러를 다시 시작하는 방법이 있습니까?
현재 우리는 5 분마다 실행되는 로깅 작업을 수행하고 로그 항목을 작성하여이를 해결합니다. 로그 파일의 업데이트가 중단되면 (nagios가 모니터링 함) tomcat을 다시 시작해야합니다. 서버를 완전히 다시 시작하지 않고 작업을 다시 시작하는 것이 좋습니다.
해결법
-
==============================
1.이 질문에는 투표 수가 너무 많기 때문에 문제에 대한 (아마도 매우 구체적인) 해결책이 무엇인지 게시 할 것입니다.
이 질문에는 투표 수가 너무 많기 때문에 문제에 대한 (아마도 매우 구체적인) 해결책이 무엇인지 게시 할 것입니다.
Apache HttpClient 라이브러리를 사용하여 예약 된 작업에서 원격 서비스를 호출합니다. 불행히도 요청을 수행 할 때 설정된 기본 시간 제한은 없습니다. 설정 후
connectTimeout connectionRequestTimeout socketTimeout
30 초 동안 문제가 없어졌습니다.
int timeout = 30 * 1000; // 30 seconds RequestConfig requestConfig = RequestConfig.custom() .setConnectTimeout(timeout) .setConnectionRequestTimeout(timeout) .setSocketTimeout(timeout).build(); HttpClient client = HttpClients.custom() .setDefaultRequestConfig(requestConfig).build();
-
==============================
2.이것은 알아 내기가 쉽습니다. 스택 트레이스를 사용하면됩니다. 스택 트레이스를 얻는 방법에 대한 많은 글이 있습니다. 유닉스 시스템에서는 'kill -3'을하고 스택 트레이스는 catalina.out 로그 파일에 나타납니다.
이것은 알아 내기가 쉽습니다. 스택 트레이스를 사용하면됩니다. 스택 트레이스를 얻는 방법에 대한 많은 글이 있습니다. 유닉스 시스템에서는 'kill -3'을하고 스택 트레이스는 catalina.out 로그 파일에 나타납니다.
스택 트레이스를 얻었 으면 스케줄러 스레드를 찾아서 무엇을하는지보십시오. 실행중인 작업이 멈췄을 가능성이 있습니까?
자세한 도움말을 보려면 여기에 스택 추적을 게시하십시오.
알아야 할 중요한 것은 당신이 사용하는 스케줄러입니다. SimpleAsyncTaskExecutor를 사용하면 각 작업에 대한 새 스레드가 시작되고 일정이 결코 실패하지 않습니다. 그러나 완료되지 않은 작업이 있으면 결국 메모리가 부족합니다.
http://docs.spring.io/spring/docs/3.0.x/reference/scheduling.html
from https://stackoverflow.com/questions/17909404/spring-scheduler-stops-unexpectedly by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Jackson의 @JsonView, @JsonFilter 및 Spring (0) | 2019.01.28 |
---|---|
[SPRING] Spring AOP - 왜 aspectjweaver가 필요한가요? (0) | 2019.01.28 |
[SPRING] 기존 스프링 애플리케이션을 스프링 부트로 마이그레이션하고, 스프링 부트를 수동으로 구성 하시겠습니까? (0) | 2019.01.28 |
[SPRING] Spring : 빌더 패턴을 사용하여 빈 작성하기 (0) | 2019.01.28 |
[SPRING] Spring Boot에서 모든 컨트롤러의 접두어를 지정하는 방법? (0) | 2019.01.28 |