Apache HTTP Server 중지 및 다시 시작
단계적 재시작
신호 : USR1 apachectl -k graceful
USR1
또는 graceful
신호는 부모 프로세스가 자식에게 현재 요청 후 종료 (또는 “아무것도 제공하지 않음). 부모는 구성 파일을 다시 읽고 로그 파일을 다시 엽니 다. 각 자식이 죽으면 부모는 구성의 새로운 세대의 자식으로 교체하여 즉시 새 요청을 처리하기 시작합니다.
이 코드는 항상 MPM의 프로세스 제어 지침을 준수하도록 설계되었으므로 클라이언트를 지원하는 데 사용할 수있는 프로세스 및 스레드 수는 재시작 프로세스 전체에서 적절한 값으로 유지됩니다. 다음과 같은 방식으로 div id = “729f2093ce”>
: 1 초 후에 최소 StartServers
새로운 하위 항목이 생성되지 않은 경우 여유 공간을 확보 할 수있을만큼 충분히 생성합니다. 따라서 코드는 서버의 현재 부하에 적합한 자식 수를 유지하고 StartServers
매개 변수를 사용하여 원하는대로 유지하려고합니다.
mod_status
는 USR1
가 전송 될 때 서버 통계가 0으로 설정되지 않음을 알립니다. 이 코드는 서버가 새 요청을 처리 할 수없는 시간을 최소화하고 (운영 체제에 의해 대기열에 추가되므로 어떤 이벤트에서도 손실되지 않음) 튜닝 매개 변수를 준수하기 위해 작성되었습니다. 이렇게하려면 여러 세대에 걸쳐 모든 어린이를 추적하는 데 사용되는 점수 판을 유지해야합니다.
상태 모듈은 또한 G
를 사용하여 단계적 재시작이 제공되기 전에 요청을 처리하기 시작했습니다.
현재는 USR1
를 사용하는 로그 회전 스크립트가 모든 어린이가 다시 시작 전 로그가 완료되었습니다. 이전 로그로 작업을 수행하기 전에 USR1
신호를 보낸 후 적절한 지연을 사용하는 것이 좋습니다. 예를 들어 대부분의 조회수가 저 대역폭 링크 사용자의 경우 완료하는 데 10 분 이상 걸리면 이전 로그로 작업을 수행하기 전에 15 분을 기다릴 수 있습니다.
재시작을 실행하면 구성 파일에 오류가 없는지 확인하기 위해 구문 검사가 먼저 실행됩니다. 구성 파일에 오류가있는 경우 해당 구문 오류에 대한 오류 메시지가 표시되고 서버는 다시 시작을 거부합니다. 이렇게하면 서버가 중지 된 다음 다시 시작할 수없는 상황을 피하여 서버가 작동하지 않게됩니다.
그래도 서버가 제대로 다시 시작된다는 보장은 없습니다. 구성 파일의 의미와 구문을 확인하려면 루트가 아닌 사용자로 httpd
를 시작해보십시오. 오류가 없으면 소켓과 로그를 열려고 시도하고 루트가 아니기 때문에 실패합니다 (또는 현재 실행중인 httpd
에 이미 해당 포트가 바인딩되어 있기 때문에). 실패 할 경우 다른 이유 때문에 구성 파일 오류 일 수 있으며 정상적인 재시작을 실행하기 전에 오류를 수정해야합니다.