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


117

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

답변:


94

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

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

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


8
php-fpm의 주요 장점은 하나의 APC 캐시를 여러 프로세스에서 공유 할 수 있다는 것입니다. fcgid를 사용하면 APC 캐시가 프로세스별로 이루어집니다. fpm을 사용하면 메모리를 크게 절약 할 수 있으므로 저장된 메모리를 사용하여 더 많은 프로세스를 생성하고 더 많은 트래픽을 처리 할 수 ​​있습니다.
cam8001

25
@ cam8001 : 그건 완전히 사실이 아닙니다. SpawnFCGI생성 할 프로세스 수와 프로세스 당 PHP 자식 수를 설정할 수 있습니다 . 따라서 100 개의 자식을 가진 1 개의 PHP 프로세스를 생성하는 것은 100 개의 자식을 가진 FPM을 사용하는 것과 동일합니다 ... 그러나 그 반대는 사실입니다. FPM이 죽으면 (세그 폴트 등) 전체 작업자가 죽습니다. SpawnFCGI에서 프로세스 중 하나가 죽더라도 나머지는 살아남을 수 있습니다. 다른 접근 방식. FPM은 기술적 인 이유로하지 않는 것이 좋습니다하지만 (실제로에서) 측의 코어를 따라 유지 있기 때문에 ...입니다
ircmaxell

56

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.


8
(2017 년 4 월)까지 그런 문제가 있습니까?
Lord Loh.

1
사용한 lighttpd 및 fpm 버전에 대한 업데이트가 권장되며, 언급 된 문제에 대한 업데이트 (2018 년 6 월)도 커뮤니티에 도움이됩니다.
Ima

0

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

이므로

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.