Apache MPM-작업자와 프리 포크


13

VPS에 설치할 수있는 최고의 Apache MPM이 무엇인지 파악하려고합니다. 나는 몇 가지 벤치 마크를 보았고 MPM Worker는 Prefork보다 성능이 좋을 것 같지만 어떤 이유로 든 모든 사람들이 Prefork over Worker를 PHP 설정을 권장하는 것 같습니다.

일부 PHP 함수가 스레드로부터 안전하지 않기 때문입니까? 만 setlocale()생각 나는,하지만 난 그 문제가 될 것이라고 생각하지 않도록 내가 모든 인스턴스에서 동일한 로케일을 사용할 것입니다. 내 VPS에는 메모리가 거의 없으며 작업자 MPM이 내 요구에 더 잘 맞을 것이라고 생각하지만 확실하지 않습니다.

누군가 내가 이것에 대해 내 마음을 구성하도록 도울 수 있습니까? 감사!


추신 : 나는 또한 nginx와 lighttpd를 보았습니다. nginx는 굉장한 것처럼 보이지만 소스에서 컴파일하지 않으려 고하지만 여전히 php-fpm이 무엇인지 이해하지 못합니다. lighttpd와 관련하여 PHP / FCGI를 설치하는 것은 매우 쉽지만 메모리 누수가 있다고 들었습니다. 아직도 그래요?


2
문제는 핵심 PHP는 이제 스레드 안전해야하지만 확장에 관해서는 모든 베팅이 해제되어 있다는 것입니다.
mattdm

답변:


12

apache + mod_php를 사용할 때는 prefork를 사용해야합니다. FAQ는 다음과 같은 이유를 명확하게 설명합니다.

http://www.php.net/manual/en/faq.installation.php#faq.installation.apache2

프로덕션 환경에서 Apache MP2와 함께 Apache2를 사용하지 않아야하는 이유는 무엇입니까?

PHP는 풀입니다. 수십 개의 써드 파티 라이브러리를 하나로 묶어 직관적이고 배우기 쉬운 언어 인터페이스를 통해 하나의 일관된 엔티티로 표시함으로써 멋진 ​​웹 애플리케이션을 빌드하는 데 사용되는 접착제입니다. PHP의 유연성과 성능은 기본 플랫폼의 안정성과 견고성에 의존합니다. 함께 작동하려면 작동하는 OS, 작동하는 웹 서버 및 작동하는 타사 라이브러리가 필요합니다. 이 중 하나라도 작동을 멈 추면 PHP는 문제를 식별하고 신속하게 해결하는 방법이 필요합니다. 완전히 분리 된 실행 스레드, 완전히 분리 된 메모리 세그먼트 및 각 요청에 대한 강력한 샌드 박스를 갖지 않음으로써 기본 프레임 워크를 더 복잡하게 만들면 PHP 시스템에 추가적인 약점이 도입됩니다.

nginx + php-fpm은 PHP 응용 프로그램을 실행하는 훌륭한 방법입니다. nginx는 FastCGI를 기본적으로 지원하며 php-fpm은 FastCGI 환경에서 PHP를 실행하는 가장 좋은 방법 중 하나입니다. 여기 PHP 문서를 참조하십시오 :

http://www.php.net/manual/en/install.fpm.php


아파치 MPM에 관해서는, prefork가 갈 길이라고 생각합니다. Apache의 메모리 소비가 많기 때문에 nginx 또는 lighttpd 설정에 관심이 있습니다. 적성과 함께 설치할 때 Lighttpd와 PHP-FCGI는 기본적으로 작동하지만 모든 사람들이 06/07에서 계속 이야기하고있는 메모리 누수가 여전히 존재하는지 확실하지 않습니다. 또한 Nginx는 CPU 사용량이 적지 만 PHP-FPM과 함께 PHP-CGI와 함께 작동하도록 할 수는 없습니다. 패키지 관리자를 사용하여 우분투에 이것을 쉽게 설치할 수 있습니까? 이 주제에 대한 독서를 추천합니까?
Alix Axel

multiverse를 사용하면 lucid에 "nginx를 설치하여 설치"할 수 있었고 챔프처럼 실행됩니다. 프로덕션 시스템에서 사용하고 있습니다. 좋은 시작점 예제 인 howtoforge.com/…이 있지만 항상 YMMV입니다.
dialt0ne

apt를 사용하여 nginx를 설치할 수는 있지만 PHP 인터프리터에 바인딩하지 못했습니다. 제공하신 링크에 php5-fpm패키지 를 제공하는 것으로 보이는 새로운 소스가 있습니다. 시도해 볼게요.
Alix Axel

이 링크가 더 나을 것입니다 howtoforge.com/… php5-fpm의 프로덕션 시스템에 brianmercer 저장소를 사용하고 있습니다.
dialt0ne
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.