프리 포크 웹 서버 모델은 정확히 무엇입니까?


94

웹 서버가 프리 포크 웹 서버로 자신을 설명 할 때 정확히 무엇을 의미하는지 알고 싶습니다. 루비의 경우 unicorn 과 파이썬의 경우 gunicorn 과 같은 몇 가지 예가 있습니다.

더 구체적으로 다음은 질문입니다.

  • 이 모델은 어떤 문제를 해결합니까?
  • 프리 포크 웹 서버가 처음 시작되면 어떻게됩니까?
  • 요청을 어떻게 처리합니까?

또한 unicorn / gunicorn에 대한보다 구체적인 질문 :

(g) unicorn으로 실행하려는 웹앱이 있다고 가정 해 보겠습니다. 초기화시 webapp은 몇 가지 초기화 작업을 수행합니다 (예 : 추가 데이터베이스 항목 채우기). 여러 작업자로 (g) unicorn을 구성하면 초기화 작업이 여러 번 실행됩니까?

답변:


102

사전 포크는 기본적으로 마스터가 각 요청을 처리하는 포크를 만드는 것을 의미합니다. 포크는 완전히 별개의 * nix 프로세스입니다.

아래 의견에 따라 업데이트하십시오. prepre-fork요청에 오기 전에 이러한 프로세스가 포크 것을 의미한다. 그러나 그들은 일반적으로 증가하거나 부하가 아래로 가고으로 감소 될 수있다.

스레드로부터 안전하지 않은 라이브러리가있을 때 Pre-forking을 사용할 수 있습니다. 또한 문제를 일으키는 요청 내의 문제가 전체 서버가 아니라 처리되는 프로세스에만 영향을 미친다는 것을 의미합니다.

여러 번 실행되는 초기화는 모두 배포하는 항목에 따라 다릅니다. 그러나 일반적으로 각 프로세스에 대해 연결 풀과 해당 특성이 존재합니다.

스레딩 모델에서 마스터는 요청을 전달하기 위해 더 가벼운 스레드를 생성합니다. 그러나 스레드가 대규모 문제를 일으키는 경우 마스터 프로세스에 영향을 미칠 수 있습니다.

Nginx, Apache 2.4의 Event MPM 또는 gevent (Gunicorn과 함께 사용할 수 있음)와 같은 도구를 사용하면 비동기식으로 프로세스가 차단하지 않고 수백 개의 요청을 처리 할 수 ​​있습니다.


29
나는 "프리 포크"의 의미에 대해 동일한 의구심을 가졌다. 나는 그것이 어떤 종류의 포크를 의미한다고 생각했지만, "pre"부분은 나를 헷갈 리게했다. 여기서 abbreviations.com/prefork 에서 "pre"부분은 실제로 작업자 프로세스가 미리 생성되어 작업자가 필요할 때만 시간을 낭비하지 않도록하는 것을 의미합니다. :) 나에게 많은 이해
엘 닌자 Trepador

1
//, @ElNinjaTrepador, 왜 별도의 답변을 추가하지 않습니까? 그것은 적어도 나에게는 훨씬 더 이해하기 쉬웠으며 그 댓글이 더 눈에 띄는 자리를 차지하면 다른 사람들에게 더 도움이 될 수 있습니다.
Nathan Basanese

2
프리 포크에 대한 정보를 조금 더 추가하기 위해 답변을 업데이트했습니다. @ElNinjaTrepador는 이것을 지적 해 주셔서 감사합니다.
Joe Doherty

1
) @NathanBasanese은 각하 할 것
엘 닌자 Trepador

4
@JoeDoherty 아마도 그것은 잘 알려져있을 것입니다. 그때까지 저에게 알려지지 않았습니다. : DI는 (Nathan의 요청에 따라) 다른 답변을 추가하려고했지만, 제가 말한 내용을 추가했기 때문에 더 이상 필요하지 않습니다. )
El Ninja Trepador
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.