[php] fastcgi와 fpm의 차이점은 무엇입니까?

macports에 fpm으로 PHP를 설치하려고합니다. fpm이 FastCGI 프로세스 관리자를 의미한다고 어딘가에서 읽었습니다. 그것은 fastcgi와 fpm이 동일하다는 것을 의미합니까? 동일하다면 왜 우리는 “php5 + fastcgi”
“php5 + fpm” 이라는 두 개의 다른 macports 변종을 가지고있는 것입니다.



답변

FPM 은 PHP에서 FastCGI SAPI (Server API)를 관리하는 프로세스 관리자입니다.

기본적으로 SpawnFCGI 와 같은 필요성을 대체합니다 . FastCGI 자식을 적응 적으로 생성합니다 (현재로드에 필요한 경우 더 많이 시작됨을 의미 함).

그렇지 않으면 FastCGI와 운영상의 차이가별로 없습니다 (요청 시작부터 끝까지의 요청 파이프 라인은 동일합니다). 더 쉽게 구현할 수 있습니다.


답변

Anthony가 말한 것은 절대적으로 정확하지만 귀하의 경험이 훨씬 더 나은 성능과 효율성을 보여줄 것이라고 덧붙이고 싶습니다 ( fpm-vs-가 fcgi아니라 httpd.

예를 들어, 내가 쿼드 코어 머신을 실행했습니다 lighttpd+ fcgi잘 따라 흥얼합니다. 성장에 대처하기 위해 16 코어 머신으로 업그레이드했는데 RAM 사용량과 세그 폴트라는 두 가지가 폭발적으로 증가했습니다. lighttpd웹 사이트를 유지하기 위해 30 분마다 다시 시작하는 것을 발견 했습니다.

php-fpm 및 nginx로 전환했고 RAM 사용량이> 20GB에서 2GB로 떨어졌습니다. Segfaults도 사라졌습니다. 몇 가지 조사를 한 후 lighttpd 및 fcgi가로드중인 멀티 코어 시스템에서 잘 작동하지 않고 특정 인스턴스에서 메모리 누수 문제가 있음을 알게되었습니다.

이것은 php-fpm보다 낫기 때문 fcgi입니까? 전적으로는 아니지만 연결 하는 방법php-fpm 은을 통해 제공하는 방법보다 훨씬 더 효율적 으로 보입니다 fcgi.


답변

PHP를 CGI로 실행한다는 것은 기본적으로 웹 서버에 PHP 실행 파일의 위치를 ​​알려주고 서버가 해당 실행 파일을 실행한다는 것을 의미합니다.

이므로

PHP FastCGI Process Manager (PHP-FPM)는 웹 사이트에서 과도한로드를 처리 할 수 ​​있도록하는 PHP 용 대체 FastCGI 데몬입니다. PHP-FPM은이를 수행하기 위해 풀 (PHP 요청에 응답 할 수있는 작업자)을 유지합니다. PHP-FPM은 다중 사용자 PHP 환경에서 SUPHP와 같은 기존 CGI 기반 방법보다 빠릅니다.

그러나 둘 다 장단점이 있으며 특정 사용 사례에 따라 선택해야합니다.

이 링크에 대한 정보는 fastcgi 대 fpm 이 내 시나리오에서 사용할 처리기를 선택하는 데 매우 유용합니다.


답변