[server] 왜 Apache가 많은 프로세스를 실행하고 있습니까? 과도한 RAM?

Apache가 LAMP 서버 (ubuntu 10.10)에서 여러 프로세스를 실행하고 있음을 알 수 있습니다. MySQL을 데이터베이스로 사용하여 WordPress 사이트를 실행하고 있습니다. www-data가 너무 많은 메모리를 사용하는 것보다 apache2를 더 많이 실행하는 것처럼 보입니다.

ID      Owner       Size        Command
31200   www-data    251236 kB   /usr/sbin/apache2 -k start
20678   www-data    250948 kB   /usr/sbin/apache2 -k start
25781   www-data    248888 kB   /usr/sbin/apache2 -k start
31045   www-data    248844 kB   /usr/sbin/apache2 -k start
19926   www-data    246480 kB   /usr/sbin/apache2 -k start
20749   www-data    239380 kB   /usr/sbin/apache2 -k start
32616   www-data    238632 kB   /usr/sbin/apache2 -k start
8846    mysql   238128 kB   /usr/sbin/mysqld
24178   www-data    234228 kB   /usr/sbin/apache2 -k start
32618   www-data    232344 kB   /usr/sbin/apache2 -k start
32615   www-data    232204 kB   /usr/sbin/apache2 -k start
19805   root    208156 kB   /usr/sbin/apache2 -k start



답변

Apache는 클라이언트 요청이 들어올 때 준비하기 위해 여러 프로세스를 실행하고 있습니다. 서버 프로세스 생성 속도가 느리므로 클라이언트를 기다리는 것이 가장 좋습니다.

메모리 사용의 경우 작업에 사용되는 실제 메모리 양인 RES 크기 (위로 표시)를 고려해야합니다.

너무 많은 메모리를 사용하는 너무 많은 apache2 프로세스가 있다고 생각하는 이유는 무엇입니까? 당신은 무엇을 기대합니까? 왜 그렇게 기대하십니까?


답변

Pawel의 답변에서 알 수 있듯이 아파치는 프로세스 풀과 함께 요청 당 프로세스 모델 (또는 mpm_worker를 사용하여 요청 당 스레드)을 사용합니다.

nginx와 같은 비 차단 IO 기반 웹 서버를 사용하여 메모리 사용량을 줄일 수 있습니다. 이렇게하면 서버가 연결 당 프로세스 / 스레드를 전용으로 지정할 필요가 없습니다.


답변

Apache는 구성한만큼 많은 프로세스를 실행합니다. 프리 포크 또는 작업자 다중 처리 모듈을 사용하는 경우 구성이 다릅니다 .


답변