[php] Thread Safe, Non Thread Safe 차이
php는 유닉스 방식인 다중 프로세스 방식인데 윈도우는 다중 쓰레드 방식이라 안정성이 떨어짐
그래서 대안으로 Thread Safe 버전을 내놨는데 성능이 떨어짐
그래서 안정성 대신 성능을 위한 Non Thread Safe 버전을 내놓음
- 웹서버와 권장 버전
IIS, ISAPI: Thread Safe version
IIS, CGI or Fast CGI: Non Thread Safe version
Apache MPM worker: Thread Safe version
Apache MPM prefork: Non Thread Safe version
Nginx Fast CGI : Non Thread Safe version
//-----------------------------------------------------------------------------
설치된 php가 Non Thread Safe 버전인지 알아보는 방법(윈도우 명령어)
> php -info | findstr /i "thread"
//=========================================
// 참고
Apache MPM (다중처리 모듈 , Multi-Processing Module)
https://httpd.apache.org/docs/2.4/ko/mpm.html
http://faq.hostway.co.kr/Linux_WEB/7043
https://zetawiki.com/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%84%9C%EB%B2%84_MPM,_prefork,_worker_%EB%B0%A9%EC%8B%9D
* prefork 방식
프로세스당 스레드(연결) 1개
자식 프로세스는 최대 1024개까지 가능
스레드간 메모리 공유 안함
→ 독립적이라 안정적
→ 메모리를 많이 사용
안정성과 오래된 소프트웨어와의 호환성이 필요한 사이트
PHP Non Thread Safe version
//===========
* worker 방식
프로세스 당 스레드(연결) 여러 개
메모리 공유 사용
→ 메모리 사용량 적음
→ 통신량이 많은 서버에 적절
→ 리소스 경합 주의 필요
높은 확장가능성(scalability)이 필요한 사이트
PHP Thread Safe version
//==================================
PHP: FPM(FastCGI Process Manager)