인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김산님의 프로필 이미지

작성한 질문수

쿠버네티스 어나더 클래스 (지상편) - Sprint3

📝 내 Application을 안정적으로 종료하기 - lifecycle.preStop, GracefulShutdown

preStop sleep 5초의 기준이 궁금합니다.

작성

·

24

1

안녕하세요 일프로님. 수업을 듣다 궁금한 점이 생겨 질문드립니다.

1.preStop sleep time을 5초로 잡은 기준이 무엇인지 궁금합니다.
구체적으로는
1)경험적으로 얻은 것인지 여부
2)하드웨어나 클라우드 서비스의 경우 EKS 같은 매니지드 서비스 마다 적절한 sleep time이 크게 달라질 수도 있을지 궁금합니다.

2. 기존 서비스의 sleep time을 40초에서 5초로 단축해도 괜찮을지
제가 인수인계 받은 사이드 프로젝트가 있는데 AWS EKS에 Spring 서버가 구현되어 있습니다.
현재 sleep time이 40초로 되어있는데 단축해도 큰 문제는 없을까요?
*장애가 나도 괜찮은 서비스라 학습 목적으로 편하게 테스트 할 예정입니다.

답변 2

1

김산님의 프로필 이미지
김산
질문자

상세한 답변 감사합니다!
남은 강의도 열심히 달려보겠습니다~

1

일프로님의 프로필 이미지
일프로
지식공유자

안녕하세요. 좋은 질문이네요.

preStop sleep time을 5초로 잡은 건, 제 경우 서적을 통해 수치를 알게 되었고, 실제 실무에서 성능 테스트를 하면서 경험적으로도 5초면 충분하다고 확인된 내용입니다.

그리고 이 수치는 EKS나 쿠버네티스 구성에 따라 좀 달라 질 수 있어요.

Service -> Pod 구조에서는 제 강의에서 처럼 iptable이 Pod에게 트래픽을 보내줍니다. 그래서 5초면 충분한건 데, 클라우드의 경우, 만약 ALB 쓴다면 트래픽을 분산해서 보내주는 주체가 Service에서 ALB로 달라집니다.

그리고 ALB에는 deregistration_delay.timeout_seconds와 같은 설정이 있어서, Service와는 다르게 Pod를 바로 제거하지 않고, 일정 시간 동안 기존 연결을 유지하려고 합니다. 이 설정이 40초 일 경우에는 preStop도 더 시간을 늘려야 되요.

그래서 현재 서비스 중인 클라우드에 그런 설정이 있는지 확인해 보시고 변경해보시는 게 좋을 거예요.

아니면 Application에 별도로 GraceFulshutdown 로직이 없을 수도 있고요.

김산님의 프로필 이미지

작성한 질문수

질문하기