[redis] sentinel : waitpid() returned a pid (...) we can't find in our scripts execution queue!

2024. 11. 18. 10:38·개발중/Redis
728x90
반응형

 

Sentinel 의 CPU 사용률이 비정상적으로 튀는현상이 발생했다.

Sentinel Log 를 확인해보니 아래와 같다.

 

1:X 15 Nov 2024 06:47:20.330 # +tilt #tilt mode entered
1:X 15 Nov 2024 06:47:20.330 # waitpid() returned a pid (924) we can't find in our scripts execution queue!
1:X 15 Nov 2024 06:47:50.401 # -tilt #tilt mode exited
1:X 15 Nov 2024 06:50:12.123 # +tilt #tilt mode entered
1:X 15 Nov 2024 06:50:12.123 # waitpid() returned a pid (1385) we can't find in our scripts execution queue!
1:X 15 Nov 2024 06:50:42.152 # -tilt #tilt mode exited
1:X 15 Nov 2024 06:55:06.731 # +tilt #tilt mode entered
1:X 15 Nov 2024 06:55:06.732 # waitpid() returned a pid (2181) we can't find in our scripts execution queue!
1:X 15 Nov 2024 06:55:36.740 # -tilt #tilt mode exited
1:X 15 Nov 2024 06:57:56.515 # +tilt #tilt mode entered
1:X 15 Nov 2024 06:57:56.515 # waitpid() returned a pid (2640) we can't find in our scripts execution queue!
1:X 15 Nov 2024 06:58:26.583 # -tilt #tilt mode exited
1:X 15 Nov 2024 06:59:09.203 # +tilt #tilt mode entered
1:X 15 Nov 2024 06:59:09.203 # waitpid() returned a pid (2842) we can't find in our scripts execution queue!
1:X 15 Nov 2024 06:59:39.223 # -tilt #tilt mode exited
1:X 15 Nov 2024 06:59:54.228 # +tilt #tilt mode entered
1:X 15 Nov 2024 06:59:54.228 # waitpid() returned a pid (2965) we can't find in our scripts execution queue!
1:X 15 Nov 2024 07:00:24.277 # -tilt #tilt mode exited
1:X 15 Nov 2024 07:01:11.484 # +tilt #tilt mode entered
1:X 15 Nov 2024 07:01:11.484 # waitpid() returned a pid (3168) we can't find in our scripts execution queue!
1:X 15 Nov 2024 07:01:41.538 # -tilt #tilt mode exited
1:X 15 Nov 2024 07:02:32.211 # +tilt #tilt mode entered
1:X 15 Nov 2024 07:02:32.211 # waitpid() returned a pid (3384) we can't find in our scripts execution queue!
1:X 15 Nov 2024 07:02:42.275 # +tilt #tilt mode entered
1:X 15 Nov 2024 07:02:42.276 # waitpid() returned a pid (3411) we can't find in our scripts execution queue!
1:X 15 Nov 2024 07:03:11.999 # +tilt #tilt mode entered
1:X 15 Nov 2024 07:03:11.999 # waitpid() returned a pid (3492) we can't find in our scripts execution queue!
1:X 15 Nov 2024 07:03:42.035 # -tilt #tilt mode exited

 

 

아래와 같은 메세지가 반복적으로 발생한다.

이 에러는 Sentinel이 tilt 모드에 들어갔다가 다시 정상 모드로 복귀하는 과정을 반복하고 있다는 에러이다.

 

+tilt #tilt mode entered
-tilt #tilt mode exited

 

tilt 모드란?

tilt 모드는 Redis Sentinel에서 특정 비정상 상태를 감지했을 때 Failover 같은 중요한 작업을 잠시 중단하도록 설계된 안전장치이다.

 

일반적으로 다음과 같은 상황에서 발생한다.

  • Sentinel이 재시작된 직후
    • Sentinel이 재시작되면 최근 데이터를 기반으로 시스템을 안정화하려고 tilt 모드에 들어간다.
  • 시스템 클럭 문제
    • 클럭 드리프트(시간 동기화 문제) 또는 클럭 조작이 감지되면 tilt 모드에 진입한다.
  • 네트워크 불안정
    • 네트워크 연결이 불안정하거나 Redis 마스터/슬레이브 노드와의 통신이 불완전할 때 발생할 수 있다.

 

tilt 모드가 실행되는 동안

  • Sentinel은 Failover 같은 작업을 일시적으로 멈추고 안정성을 확보한다.
  • 일정 시간이 지나면 tilt 모드에서 벗어난다.

 

원인 분석

tilt 모드 반복 진입/해제

  • Sentinel이 주기적으로 tilt 모드에 들어갔다가 빠져나오고 있다.
  • 이는 시스템 환경의 불안정, Sentinel 재시작, 또는 클러스터 노드와의 통신 문제를 나타낸다.

 

waitpid() 에러

  • Sentinel이 Failover 시 실행한 스크립트 프로세스를 추적하지 못했다는 뜻이다.
  • 이는 Sentinel에서 스크립트를 실행하는 환경의 문제(스크립트 경로, 권한, 리소스 부족 등)를 나타낼 수 있다.

 

해결 방안

myValues.yaml 파일에 useHostnames  옵션을 비활성화 했다. (  )

 


useHostnames의 역할

useHostnames: true
Redis Sentinel은 노드 간 통신 시 호스트네임을 사용합니다.예: soobin-redis-node-2.soobin-redis-headless.soobin.svc.cluster.local이 설정은 클러스터 노드가 호스트네임 기반 DNS를 통해 서로를 찾도록 유도합니다.

useHostnames: false
Redis Sentinel은 노드 간 통신 시 IP 주소를 사용합니다.예: 192.168.1.100이는 DNS를 우회하고 직접 IP를 사용하여 통신하도록 합니다.

장단점

1. useHostnames: true

장점: DNS를 사용하므로, 환경 변화(예: IP 변경)에 대응하기 쉽습니다.특히 Kubernetes 환경에서 서비스 디스커버리를 활용할 때 유리합니다.

단점:
DNS가 제대로 설정되지 않거나 작동하지 않으면 연결 문제가 발생할 수 있습니다.Sentinel이 마스터 또는 슬레이
브를 감지하지 못하거나 tilt 모드로 진입할 가능성이 높아집니다.


2. useHostnames: false

장점:
DNS를 우회하고 IP 주소로 직접 통신하므로, DNS 관련 문제를 완전히 배제할 수 있습니다.단순한 네트워크 환경에서는 더 안정적으로 동작합니다.

단점:
IP 주소가 변경되면 통신 문제가 발생할 수 있습니다.Kubernetes와 같은 동적 환경에서는 적합하지 않을 수 있습니다(클러스터 노드가 재배치되면 IP가 변경될 가능성이 있음).

 

useHostnames: false

 

 

하지만 useHostnames 옵션을 false 로 하니 DNS 를 사용하지 않기 때문에 Redis 를 참조하는 Application 에서 에러가 나기 시작했다.

 

useHostnames: true

 

다시 true 로 변경 후 재기동하니 같은 에러는 없어졌다..

추후에 모니터링 해본 후 같은 에러가 나면 이어서 작성하겠다.

 

 

728x90
반응형
저작자표시 (새창열림)

'개발중 > Redis' 카테고리의 다른 글

[Redis] Sentinel tilt mod Error 해결 : 버전문제  (0) 2024.12.20
Redis Pub/Sub 에 대해서 알아보기.  (0) 2024.09.24
[트러블 슈팅] Headless Service 에 대한 오해 (1)  (0) 2023.09.18
고성능을 위한 Redis (High Availability, HA)와 Kubernetes 구축 마스터 가이드 (Spring Session storage 설정까지)  (1) 2023.09.18
[트러블슈팅] Could not connect to Redis at 127.0.0.1:6379: Connection refused  (0) 2023.09.12
'개발중/Redis' 카테고리의 다른 글
  • [Redis] Sentinel tilt mod Error 해결 : 버전문제
  • Redis Pub/Sub 에 대해서 알아보기.
  • [트러블 슈팅] Headless Service 에 대한 오해 (1)
  • 고성능을 위한 Redis (High Availability, HA)와 Kubernetes 구축 마스터 가이드 (Spring Session storage 설정까지)
Binsoo
Binsoo
내 트러블 슈팅
  • Binsoo
    정수빈 기술블로그임.
    Binsoo
  • 전체
    오늘
    어제
    • 빈수 개발자 개발 일기 (932)
      • 개발중 (634)
        • Spring Boot (95)
        • Spring Security (2)
        • Spring Batch (6)
        • Spring Boot & Redis (13)
        • Java Persistence API (JPA) (28)
        • Web (42)
        • Rest Api (7)
        • Spring Concurrency Control (3)
        • Redis (8)
        • Kubernetes (k8s) (4)
        • MYSQL (35)
        • AirFlow (15)
        • Docker (2)
        • Git (22)
        • Linux (9)
        • JSON Web Tokens (JWT) (4)
        • Troubleshooting (87)
        • Swagger (0)
        • Vue.js (52)
        • Java (74)
        • html (12)
        • C (5)
        • jQuery (15)
        • JavaServer Pages (JSP) (17)
        • Arduino (1)
        • JavaScript (35)
        • Amazon Web Services (AWS) (11)
        • Algorithm (9)
        • 참고 기능 (18)
        • mongo (2)
      • PROJECT (27)
        • 스프링부트+JPA+몽고 API 개발 (3)
        • MINI (2)
        • 게시판 (3)
        • vue 프로젝트 (1)
        • JPA 사이드 프로젝트 기록 (17)
      • TEAM STUDY (156)
        • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (8)
        • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (12)
        • NAVER DEVELOPER (4)
        • LINUX (23)
        • PYTHON (19)
        • SERVER (8)
        • 알고리즘 코딩 테스트 스터디 (31)
        • 쿠버네티스 (40)
        • 대세는 쿠버네티스 [초급~중급] (11)
      • BOOK (0)
      • 자격증 (61)
        • 리눅스 1급 - 필기 기록 (19)
        • 네트워크 관리사 (2)
        • 네트워크 관리사 2급 - 실기 기록 (21)
        • 네트워크 관리사 2급 - 필기 기록 (16)
        • 정보처리 (2)
      • 직장인 대학원 (17)
        • 기록 (1)
        • 캐글 스터디 (3)
        • R (12)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    쿠버네티스 스터디
    redis
    네트워크 관리사
    리눅스 마스터 1급 정리
    java
    리눅스 마스터
    git
    리눅스 마스터 1급 요약
    네트워크 관리사 요약
    쿠버네티스
    네트워크 관리사 실기
    jpa
    스프링
    리눅스 1급 요약
    REST API
    Git 저장소
    BackendDevelopment
    리눅스 마스터 1급
    네트워크 관리사 자격증
    springboot
    Spring
    네트워크 관리사 2급 실기
    리눅스 마스터 요약
    네트워크 관리사 학점
    네트워크 관리사 2급
    파이썬 알고리즘
    docker
    파이썬
    VUE
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Binsoo
[redis] sentinel : waitpid() returned a pid (...) we can't find in our scripts execution queue!

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.