CGI, FastCGI, PHP-CGI, PHP-FPM, Spawn-FCGI란 무엇인가요?
CGI란 무엇입니까
CGI의 전체 이름은 "공통 게이트웨이 인터페이스"입니다. HTTP 서버는 사용자 또는 다른 컴퓨터의 프로그램과 "대화"합니다. 네트워크 서버에서.
CGI는 언어에 표준 입력, 출력 및 환경 변수가 있는 한 어떤 언어로든 작성할 수 있습니다. php, perl, tcl 등과 같은 것입니다.
FastCGI란 무엇입니까?
FastCGI는 활성화되어 있는 한 항상 실행될 수 있습니다. , 그렇지 않습니다. 매번 포크하는 데 시간이 걸립니다(이것은 CGI에서 가장 비판받는 포크 및 실행 모드입니다). 또한 분산 컴퓨팅을 지원합니다. 즉, FastCGI 프로그램은 웹 사이트 서버가 아닌 호스트에서 실행될 수 있으며 다른 웹 사이트 서버의 요청을 수락할 수 있습니다.
FastCGI는 언어 독립적이고 확장 가능한 아키텍처 CGI 개방형 확장입니다. 주요 동작은 CGI 인터프리터 프로세스를 메모리에 유지하여 더 높은 성능을 얻는 것입니다. 우리 모두 알고 있듯이 CGI 인터프리터의 반복적인 로딩은 CGI 성능이 저하되는 주된 이유입니다. CGI 인터프리터가 메모리에 남아 있고 FastCGI 프로세스 관리자 스케줄링을 허용한다면 우수한 성능, 확장성, 장애 조치 기능 등을 제공할 수 있습니다.
FastCGI 및 CGI의 기능
1. CGI와 마찬가지로 FastCGI도 언어 독립적입니다.
2. CGI와 마찬가지로 FastCGI는 프로세스에 포함된 애플리케이션입니다. . 코어 웹 서버와 독립적으로 실행되어 API보다 더 안전한 환경을 제공합니다. (API는 애플리케이션의 코드를 핵심 웹 서버와 연결합니다. 즉, 결함이 있는 API가 있는 애플리케이션은 다른 애플리케이션이나 코어 서버를 손상시킬 수 있습니다. 악성 API의 애플리케이션 코드는 다른 애플리케이션을 훔칠 수도 있습니다. 프로그램 또는 코어 서버 키. )
3. FastCGI 기술은 현재 C/C++, Java, Perl, Tcl, Python, SmallTalk, Ruby 등의 언어를 지원합니다. 관련 모듈은 Apache, ISS, Lig/search?q=Spawn-FCGI)에 있지만 이전 버전에서도 찾을 수 있습니다. lig /download/lig/projects/spawn-fcgi에서 최신 버전은 /download/spawn-fcgi-1.6.3.tar.gz입니다.
참고: 최신 Spawn-FCGI의 경우 검색할 수 있습니다. "Spawn-FCGI"의 최신 버전 릴리스 주소를 찾으려면
이제 Spawn-FCGI를 사용하여 php-CGI의 FastCGI 프로세스를 제어할 수 있습니다.
/usr/local/bin/ generate -fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-CGI
매개변수의 의미는 다음과 같습니다.
-f는 FastCGI를 호출하는 프로세스의 실행기 위치를 지정하고 시스템에 설치된 PHP에 따라 설정합니다.
-a는 주소 addr에 바인딩합니다
-p 포트 포트에 바인딩
-s Unix 소켓에 바인딩된 경로 경로
-C는 생성된 FastCGI 프로세스 수를 지정하며 기본값은 5입니다(PHP에만 해당).
-P는 생성된 프로세스의 PID 파일 경로를 지정합니다.
-u 및 -g FastCGI가 실행하기 위해 사용해야 하는 ID(-u user-g 사용자 그룹)를 사용할 수 있습니다. 우분투의 www-data 및 상황 구성에 따른 기타(nobody, apache 등)
PHP-FPM과spawn-CGI의 비교 테스트
PHP-FPM은 매우 사용하기 편리하며 구성은 모두 PHP-FPM.ini 파일에 있으며 시작 및 다시 시작은 php/sbin/PHP-FPM에서 수행할 수 있습니다. 더욱 편리한 점은 php.ini를 수정한 후 PHP-FPM reload를 직접 사용하여 프로세스를 종료하지 않고 php.ini 수정 및 로딩을 완료할 수 있다는 것입니다.
PHP-FPM을 사용하면 PHP 성능을 크게 향상시킬 수 있습니다. PHP-FPM으로 제어되는 프로세스의 CPU 재활용 속도는 상대적으로 느리고, 메모리는 균등하게 할당됩니다.
Spawn-FCGI가 제어하는 프로세스의 CPU가 빠르게 저하되고 메모리 할당이 상대적으로 고르지 않습니다. 많은 프로세스가 할당되지 않은 것처럼 보이지만 다른 프로세스는 많이 사용되고 있습니다. 이는 프로세스 작업의 고르지 못한 분포로 인해 발생할 수도 있으며 이로 인해 전체 응답 속도가 저하되기도 합니다.
PHP-FPM의 합리적인 분포는 전반적인 응답과 작업의 평균에 대한 언급으로 이어집니다.
PHP-FPM과 Spawn-FCGI의 기능 비교
참조: http://php-fpm.org/about/
PHP-FPM, Spawn- FCGI는 php-cgi를 보호하는 프로세스 관리자입니다.