서버 프로세스의 우아한 종료
이 페이지는 시그널을 사용하여 작동 중인 서버 프로세스를 우아하게 종료하는 방법을 소개합니다.
Server.Run(Handler)
로 서버 처리를 시작하면 블록되어 들어오는 시그널을 기다립니다.
실행 중인 프로그램에 보낼 수 있는 두 가지 유형의 시그널이 있으며, 이를 사용하여 프로세스를 우아하게 종료할 수 있습니다.
-
TSTP: 이 시그널은
Server
에 새로운 작업을 처리하지 않도록 지시합니다. -
TERM 또는 INT: 이 시그널은
Server
를 종료(즉, 셧다운)하도록 지시합니다.
새로운 작업 처리를 중지하기 위해 먼저 TSTP 시그널을 보내는 것이 좋습니다. 그리고 모든 진행 중인 작업이 완료될 때까지 기다린 후, 프로그램을 종료하기 위해 TERM 시그널을 보냅니다.
시그널을 보내기 위해 kill
명령어를 사용합니다.
kill -TSTP # 새로운 작업 처리 중지
kill -TERM # 서버 종료
참고: TERM 또는 INT 시그널을 TSTP 시그널을 보내지 않고 보내면, Server
는 모든 워커가 완료될 때까지 8초간 타이머를 시작하고 기다립니다 (이 타임아웃 기간을 사용자 정의하려면 ShutdownTime
구성을 사용하세요). 그 시간 내에 완료되지 않은 워커가 있다면 작업은 대기 중 상태로 전환되어 프로그램 재시작 시 다시 처리됩니다.
참고: 현재 Windows는 TSTP 시그널을 지원하지 않습니다.