redis_process
Redis Server Process 프로세스
레디스 서버 교육 신청 |
레디스 정기점검/기술지원 Redis Technical Support |
레디스 엔터프라이즈 서버 Redis Enterprise Server |
---|
레디스 서버 프로세스
프로세스 2개가 동시에 실행중인 경우
리눅스의 top 명령으로 프로세스를 보고 있으면, 분명 레디스 서버는 하나만 실행중인데, 레디스 프로세스 2개가 보일때가 있습니다. 이것은 스레드가 아니고 레디스 프로세스 2개가 동시에 실행중인 것입니다.레디스 서버는 RDB 파일을 저장할때와 AOF 파일을 다시 쓸 때(rewrite) 자식 프로세스를 생성해서 작업합니다.
- RDB 파일을 저장할때
- BGSAVE 명령을 실행해서 RDB 파일을 저장할때
- redis.conf 파일의 save option에 의해서 RDB 파일을 저장할때
- SLAVEOF host port 명령을 실행해서 복제하려고 RDB 파일을 저장할때
- redis.conf 파일의 slaveof 설정으로 슬레이브 노드의 요청에 의해 RDB 파일을 저장할때
- AOF 파일을 저장할때
- BGREWRITEAOF 명령을 실행해서 AOF 파일을 rewrite할때 저장할때
- redis.conf 파일의 auto-aof-rewrite-percentage 옵션에 의해서 AOF 파일을 rewrite할때 저장할때
Child Process 확인
- Child Process가 실행 중 일 때 ps 명령으로 확인할 수 있다.
- 구분은 CMD와 NLWP개수(1개)로 확인할 수 있다. CMD에 세 가지가 표시된다.
- redis-aof-rewrite
- redis-rdb-bgsave
- redis-rdb-to-slaves: replication 용으로 RDB 파일을 생성할 때
BGSAVE 명령을 실행해서 RDB 파일을 저장할때
- redis-cli 에서 bgsave 명령을 실행한다.
- RDB 파일 저장 시 서버 메시지: M은 부모 프로세스이고 C는 자식 프로세스이다. 이때는 2개의 프로세스가 동시에 동작한다. Top 명령으로 보면 redis-server 프로세스가 2개 보인다.
45928:M * Background saving started by pid 61975 자식 프로세스를 생성한다
61975:C * DB saved on disk 자식 프로세스가 RDB파일 저장 완료
61975:C * RDB: 0 MB of memory used by copy-on-write 저장중 부모 프로세스에서 데이터 번경이 없었다
45928:M * Background saving terminated with success
61975:C * DB saved on disk 자식 프로세스가 RDB파일 저장 완료
61975:C * RDB: 0 MB of memory used by copy-on-write 저장중 부모 프로세스에서 데이터 번경이 없었다
45928:M * Background saving terminated with success
redis.conf 파일의 save option에 의해서 RDB 파일을 저장할때
- redis.conf save 설정
- RDB 파일 저장 시 서버 메시지: 메시지는 위와 같고 시작 시 어떤 save 조건에 의해서 시작했는지가 나온다.
save 900 1
save 300 10
save 60 10000
save 300 10
save 60 10000
45928:M * 10 changes in 300 seconds. Saving...
SLAVEOF host port 명령을 실행해서 복제하려고 RDB 파일을 저장할때
- 5002번 redis-cli 에서 slaveof 127.0.0.1 5001 명령을 실행한다.
- RDB 파일 저장 시 서버 메시지
45928:M * Slave 127.0.0.1:5002 asks for synchronization
45928:M * Full resync requested by slave 127.0.0.1:5002
45928:M * Starting BGSAVE for SYNC with target: disk
45928:M * Background saving started by pid 62045 자식 프로세스 시작
62045:C * DB saved on disk
62045:C * RDB: 0 MB of memory used by copy-on-write
45928:M * Background saving terminated with success
45928:M * Synchronization with slave 127.0.0.1:5002 succeeded
45928:M * Full resync requested by slave 127.0.0.1:5002
45928:M * Starting BGSAVE for SYNC with target: disk
45928:M * Background saving started by pid 62045 자식 프로세스 시작
62045:C * DB saved on disk
62045:C * RDB: 0 MB of memory used by copy-on-write
45928:M * Background saving terminated with success
45928:M * Synchronization with slave 127.0.0.1:5002 succeeded
redis.conf 파일의 slaveof 설정으로 슬레이브 노드의 요청에 의해 RDB 파일을 저장할때
- 슬레이브 노드가 시작할때 슬레이브 노드에서 마스터 노드에 데이터를 요청하고 마스터 노드는 RDB 파일을 만들어서 전달한다. 서버에서 나오는 메시지는 위와 같다.
- 슬레이브 노드와 diskless 방식으로 통신을 해도 자식 프로세스가 생성되는 것은 동일한다.
Diskless 방식은 레디스 복제를 참조하세요.
BGREWRITEAOF 명령을 실행해서 AOF 파일을 rewrite할때 저장할때
- 자식 프로세스를 생성해서 rewrite 한다. 다음은 aof rewrite 시 나오는 서버 메시지이다.
3849:M * Background append only file rewriting started by pid 3909 자식 프로세스 시작
3849:M * AOF rewrite child asks to stop sending diffs.
3909:C * Parent agreed to stop sending diffs. Finalizing AOF...
3909:C * Concatenating 32.41 MB of AOF diff received from parent.
3909:C * SYNC append only file rewrite performed
3909:C * AOF rewrite: 47 MB of memory used by copy-on-write
3849:M * Background AOF rewrite terminated with success
3849:M * Residual parent diff successfully flushed to the rewritten AOF (0.00 MB)
3849:M * Background AOF rewrite finished successfully
3849:M * AOF rewrite child asks to stop sending diffs.
3909:C * Parent agreed to stop sending diffs. Finalizing AOF...
3909:C * Concatenating 32.41 MB of AOF diff received from parent.
3909:C * SYNC append only file rewrite performed
3909:C * AOF rewrite: 47 MB of memory used by copy-on-write
3849:M * Background AOF rewrite terminated with success
3849:M * Residual parent diff successfully flushed to the rewritten AOF (0.00 MB)
3849:M * Background AOF rewrite finished successfully
redis.conf 파일의 auto-aof-rewrite-percentage 옵션에 의해서 AOF 파일을 rewrite할때 저장할때
- redis.conf 파일의 auto-aof-rewrite-percentage 옵션을 100 으로 하면 aof 파일 크기가 100%씩 늘어날때마다 aof 파일을 다시 쓴다. 이때 자식 프로세스를 생성한다.
- 위 메시지와 동일하고 첫번째 줄에 다음 내용이 추가된다.
3849:M * Starting automatic rewriting of AOF on 100% growth
<< Redis Threads | Processes Threads Concept >> |
---|
Email
답글이 올라오면 이메일로 알려드리겠습니다.