Apache 2.2 mpm_worker : 더 많은 스레드 또는 더 많은 프로세스?


17

Apache에서 Worker MPM을 사용할 때 자식 프로세스 수와 자식 프로세스 당 서버 스레드 수를 조절할 수 있습니다.

각각의 장단점은 무엇입니까? 어떤 상황에서 어느 쪽을 증가 시키겠습니까?

답변:


25

지금까지 스레드와 프로세스를 결정할 때 고려해야 할 사항은 다음과 같습니다.

  1. 스레드는 프로세스보다 훨씬 적은 상주 메모리를 사용합니다. 예, 동적으로 연결된 라이브러리를 사용하면 Apache Control Process와 하위 프로세스간에 많은 메모리가 공유되지만 새 프로세스마다 활성화 한 모든 모듈을 인스턴스화해야합니다.

    예를 들어 5 개의 프로세스와 1 개의 스레드 또는 5 개의 프로세스와 25 개의 스레드와 같은 각 프로세스의 메모리 사용량을 비교하여 쉽게 테스트 할 수 있습니다. 필자의 경우 각 하위 프로세스는 스레드 양에 관계없이 약 7MB를 사용합니다.

    + 나사

  2. 스레드보다 새 프로세스를로드하는 데 시간 및 CPU주기 측면에서 시작하는 데 시간이 더 걸립니다. 'ab'을 통해 게재 된 평균 페이지 수를 확인하여 테스트 할 수 있습니다.

    + 나사

  3. 프로세스 스레드는 모두 프로세스에 의존합니다. 여기서 가장 큰 관심사는 프로세스에 문제가 발생하면 프로세스와 관련된 모든 스레드에 영향을 미친다는 것입니다. 스레드가 많은 단일 프로세스로 실행하는 경우 프로세스가 종료되면 스레드도 마찬가지입니다. 따라서 더 많은 프로세스는 더 나은 분리를 유발하므로 원한다면 "결함"허용 오차가 커집니다.

    + 프로세스

  4. (3)과 관련하여 PHP와 같은 모듈의 경우 메모리는 프로세스에 의해로드되고 모든 스레드에서 공유됩니다. 즉, memory_limit가 100Mbs로 설정된 PHP가 25 스레드 이하인 경우 최대로드에서 기술적으로 각 스레드는 각각 최대 4MB를 할당 할 수 있습니다 (이 방법으로는 발생하지 않습니다. 굶주림).

결국, 그것은 실제로 당신의 유스 케이스에 달려 있습니다. 말하자면, 당신은 메모리 사용량을 줄이고 응답 성을 높이기 위해 사용되는 쓰레드의 양을 최대화하고 싶을 것입니다. 그러나 내결함성을 높이려면 적절한 양의 프로세스와 균형을 유지해야합니다.

코스 나는 최근에 이것에 대해 관심을 가져야 만 했으므로 여기에 전문가가 아니므로 다른 답변이 여기에 나타날 것을 기대합니다!


1
좋은 일반 정보는 +1입니다. 그래도 가능하다면 더 깊이 / 구체적인 디테일을보고 싶습니다.
sh-beta
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.