인프런 커뮤니티 질문&답변
스프링 부트 종료 시 오류
작성
·
505
·
수정됨
0
안녕하세요 강의를 수강하던 도중 Eureka에 연결해 놓은 프로젝트를 종료하면 모든 프로젝트에서 아래와 같은 에러가 발생합니다
해결방안이 있을까요?
2024-05-28T23:22:04.304+09:00 INFO 42143 --- [apigateway-service] [ionShutdownHook] o.s.c.n.e.s.EurekaServiceRegistry : Unregistering application APIGATEWAY-SERVICE with eureka with status DOWN
2024-05-28T23:22:04.304+09:00 INFO 42143 --- [apigateway-service] [ionShutdownHook] com.netflix.discovery.DiscoveryClient : Saw local status change event StatusChangeEvent [timestamp=1716906124304, current=DOWN, previous=UP]
2024-05-28T23:22:04.304+09:00 DEBUG 42143 --- [apigateway-service] [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator : Executing on-demand update of local InstanceInfo
2024-05-28T23:22:04.304+09:00 DEBUG 42143 --- [apigateway-service] [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator : Canceling the latest scheduled update, it will be rescheduled at the end of on demand update
2024-05-28T23:22:04.304+09:00 INFO 42143 --- [apigateway-service] [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_APIGATEWAY-SERVICE/192.168.75.30:apigateway-service:8000: registering service...
2024-05-28T23:22:04.309+09:00 INFO 42143 --- [apigateway-service] [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_APIGATEWAY-SERVICE/192.168.75.30:apigateway-service:8000 - registration status: 204
2024-05-28T23:22:06.396+09:00 INFO 42143 --- [apigateway-service] [ionShutdownHook] com.netflix.discovery.DiscoveryClient : Shutting down DiscoveryClient ...
2024-05-28T23:22:09.402+09:00 INFO 42143 --- [apigateway-service] [ionShutdownHook] com.netflix.discovery.DiscoveryClient : Unregistering ...
2024-05-28T23:22:09.410+09:00 INFO 42143 --- [apigateway-service] [ionShutdownHook] c.n.d.s.t.d.RedirectingEurekaHttpClient : Request execution error. endpoint=DefaultEndpoint{ serviceUrl='http://localhost:8761/eureka/} exception=Connection pool shut down stacktrace=java.lang.IllegalStateException: Connection pool shut down
중략...
2024-05-28T23:22:09.413+09:00 INFO 42143 --- [apigateway-service] [ionShutdownHook] c.n.d.s.t.d.RedirectingEurekaHttpClient : Request execution error. endpoint=DefaultEndpoint{ serviceUrl='http://localhost:8761/eureka/}, exception=Connection pool shut down stacktrace=java.lang.IllegalStateException: Connection pool shut down
중략...
2024-05-28T23:22:09.413+09:00 WARN 42143 --- [apigateway-service] [ionShutdownHook] c.n.d.s.t.d.RetryableEurekaHttpClient : Request execution failed with message: Connection pool shut down
2024-05-28T23:22:09.413+09:00 ERROR 42143 --- [apigateway-service] [ionShutdownHook] com.netflix.discovery.DiscoveryClient : DiscoveryClient_APIGATEWAY-SERVICE/192.168.75.30:apigateway-service:8000 - de-registration failedCannot execute request on any known server
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
중략...
2024-05-28T23:22:09.420+09:00 INFO 42143 --- [apigateway-service] [ionShutdownHook] com.netflix.discovery.DiscoveryClient : Completed shut down of DiscoveryClient
Process finished with exit code 130 (interrupted by signal 2:SIGINT)
답변 2
0
안녕하세요, 이도원입니다.
말씀하신 내용처럼 해당 프로젝트가 종료되었을 때, Eureka-Client의 상태가 정상적이지 않기 때문에, 올려주셨던 오류가 발생하는 것 같습니다. 일반적으로 서비스 또는 애플리케이션에 비정상 종료 등의 이벤트가 발생될 때, 작업 중이던 내용을 처리 후에(현재 처리 중인 내용을 모두 처리), 서서히 종료될 수 있도록 하는 Graceful shutdown을 처리하고 있습니다. 비정상 종료에 대한 이벤트 감지 또는 Gracefule shutdown 시 Eureka에 unregistry 이벤트가 전달 되게 추가해 보실 수도 있을 것 같습니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
James.Hong님의 질문에 대해 비슷한 상황을 다룬 유익한 답변이 있는 링크를 찾았습니다.
Eureka 서비스 Nohup 다운 감지에서는 Eureka와 연결된 애플리케이션을 종료할 때 발생할 수 있는 유사한 문제에 대한 해결 방안이 제시되었습니다. 특히, 서비스를 자동으로 감지하지 못하는 경우에 대한 질문입니다.
해당 질문에서는 Nohup으로 실행된 스프링 부트 애플리케이션을 kill 했을 때 Eureka가 자동으로 감지하지 못하여 연결 오류가 발생하는 문제에 대해 이도원 강사님께서 답변을 제공하셨습니다. 이도원 강사님은 Eureka에 등록된 애플리케이션을 종료할 시 해당 프로세스를 감지하고 처리하는 방법을 제시하셨어요. Eureka에 등록된 서비스를 수동으로 삭제하는 REST API 호출 방법을 소개하며 이를 통해 해결 방안을 제시하고 있습니다.
게시글 내용 중 일부는 아래와 같습니다:
안녕하세요, 이도원입니다.
Eureka에서 애플리케이션(서비스)의 상태 변경을 수동으로 관리하기 위해 아래와 같은 REST API 호출이 가능합니다.
예를 들어, 서비스가 DOWN 상태로 변경되었을 때 이를 Eureka 서버에 등록하려면 다음 API를 사용할 수 있습니다.
PUT /eureka/apps/appID/instanceID/status?value=DOWN
또한, 등록된 애플리케이션을 삭제하려면 다음과 같은 API 호출이 가능합니다.
DELETE /eureka/apps/appID/instanceID
자세한 내용은 Eureka REST operations에서 확인할 수 있습니다.
James.Hong님께서 겪고 계신 문제에 대해, 비슷한 상황에서 어떻게 대처할 수 있는지에 대한 아이디어를 제공할 수 있을 것 같습니다. 특히 서비스 종료 시 Eureka와의 연결 문제 관련하여 직접 해결하거나, 더 나은 로그 관리 및 오류 대응 방법을 모색하는 데 도움이 될 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





