Apache graceful와 restart의 차이
조회 0 · 댓글 0
httpd.conf나 VirtualHost, 모듈 설정을 바꾸고 운영 중에 반영할 때 restart를 쓰면 진행 중이던 요청까지 끊깁니다. 무중단으로 반영하려면 graceful을 씁니다.
apachectl -k graceful # SIGUSR1, 무중단 재적용
apachectl -k restart # SIGHUP, 자식 즉시 종료 후 재적용
apachectl -k graceful-stop # SIGWINCH, 무중단 종료graceful은 부모가 설정과 로그 파일을 다시 읽고, 각 자식 프로세스에 현재 요청을 끝낸 뒤 종료하라고 알립니다. 요청을 처리 중이 아닌 자식은 즉시 종료되고, 종료된 자식은 새 설정 세대의 자식으로 교체되어 바로 새 요청을 받습니다. restart는 TERM처럼 자식을 즉시 죽인 뒤 설정을 다시 읽고 새 자식을 띄우므로 진행 중이던 요청이 끊깁니다. graceful-stop은 자식에 종료를 알린 뒤 PidFile을 지우고 모든 포트에서 리스닝을 멈춥니다. 남은 자식이 끝나길 기다렸다가 부모도 종료하는데, GracefulShutdownTimeout을 넘기면 남은 자식에 TERM을 보내 강제 종료합니다.
graceful은 설정에 문법 오류가 있으면 반영에 실패할 수 있으니 재적용 전에 문법 검사를 먼저 돌리는 편이 안전합니다.
apachectl configtest # 또는 httpd -t로그인 후 답글을 남길 수 있습니다.