
apache2 서버를 시작하는 명령이 실제로 세 개의 프로세스를 시작하는 이유를 알고 싶습니다.
실제로 다음 명령을 입력합니다.
sudo apache2ctl -k start
그런 다음 다음 명령을 입력하세요.
ps aux | grep apache2
apache2에 해당하는 세 가지 프로세스를 제공합니다. 그게 정상인가요?
답변1
예. Apache에는 요청을 처리하기 위한 여러 가지 처리 모듈이 있습니다. 가장 일반적인 것은 worker
및 입니다 prefork
. 둘 다 여러 프로세스를 사용합니다. Prefork
클라이언트 연결당 프로세스를 사용하며 지연 없이 새 연결을 처리하는 데 사용할 수 있는 유휴 프로세스가 몇 개 있는지 항상 확인합니다. Worker
여전히 여러 프로세스를 사용하지만 이러한 프로세스에서도 스레드를 사용합니다. 이는 기존에 비해 적은 리소스를 사용 prefork
하지만 여전히 여러 프로세스가 필요합니다.
여러분이 보는 프로세스 중 하나는 아마도 TCP 포트를 열고 연결을 기다리고 들어오는 연결을 다른 아파치 프로세스에 전달하여 실제 처리를 수행하는 "마스터" 프로세스일 것입니다. 다른 프로세스는 prefork
또는 worker
모듈의 작업자 프로세스입니다.