레이블이 defunct인 게시물을 표시합니다. 모든 게시물 표시
레이블이 defunct인 게시물을 표시합니다. 모든 게시물 표시

redis-server defunct 문제

# redis cluster 서버를 운영 중에 redis 의 상태를 체크하려고
# 프로세스 카운트 아래와 같이 해본다.
ps -ef | grep redis-server | grep -v grep | wc -l

# 그런데 가끔 카운트가 증가되는 경우가 발생한다.
# 증가했을때 ps 를 보면 다음과 같이 defunct(zombie)프로세스가 나타난다.
# (pid ip 등은 임의 값으로 편집한것임)
ysoftman 1234    1  1 Aug30 ? 02:38:07 /home/ysoftman/redis/bin/redis-server 10.10.10.10:7001 [cluster]
ysoftman 555  1234  0 22:22 ? 00:00:00 [redis-server] <defunct>

# 찾아봐도 뚜렷한 원인은 알 수 없었다.
# 위 ps 에서  defunct 의 ppid 가 redis-server 인것을 보면
# redis-server 가 어떤 작업 수행을 위해 임의로 fork 하는것으로 보인다.
# defunct 발생시간에 redis.log 파일을 보면 555 프로세스가 rdb 덤프 작업을 하는것을 알 수 있었다.

10000 changes in 60 seconds. Saving...
Background saving started by pid 555
DB saved on disk
RDB: 0 MB of memory used by copy-on-write
Background saving terminated with success

# .conf 파일에 디폴트로 다음과 같은 조건으로 덤프를 실행하게 된다.
#   after 900 sec (15 min) if at least 1 key changed
#   after 300 sec (5 min) if at least 10 keys changed
#   after 60 sec if at least 10000 keys changed
save 900 1
save 300 10
save 60 10000

# 어째든 rdb 덤프를 위해서 redis-server 가 백그라운드로 실행하는 프로세스가
# 가끔 defunct 가 될 수 있다.
# 휘발성 데이터라면 다음으로 덤프로 기능을 끌 수 있다.
save ""