ThinkPHP 5.1 프로그램의 Nginx와 Apache에서의 성능 비교
발행: (2026년 1월 8일 오전 11:08 GMT+9)
4 min read
원문: Dev.to
Source: Dev.to
핵심 결론 (TP5.1 대상)
- 고동시성 상황: Nginx의 요청 처리 능력(RPS)은 Apache(prefork 모드)의 1.5배에서 3배 정도이며, 경우에 따라 더 높을 수도 있습니다.
원리 분석: 왜 Nginx가 TP/PHP 프로그램에 더 적합한가?
아키텍처와 PHP 처리 방식 (가장 중요한 차이점)
| 특성 | Nginx + PHP‑FPM | Apache (prefork) + mod_php |
|---|---|---|
| 프로세스 모델 | Nginx 워커 프로세스는 가볍고 요청 전달만 담당; PHP‑FPM 프로세스는 별도로 관리되고 수를 조절 가능 | 각 Apache 프로세스에 PHP 인터프리터가 포함돼 있어 자원 소모가 큼 |
| 정적 파일 처리 | 순수 C 코드로 효율적으로 처리(CSS, JS, 이미지) – 속도가 매우 빠름 | 모듈을 통해 처리되며 성능이 상대적으로 낮음 |
| 동시 연결 | 하나의 Nginx 워커 프로세스가 수천 개의 동시 연결을 손쉽게 처리 | 각 프로세스가 처리할 수 있는 연결 수가 제한돼 동시성이 제한됨 |
이것이 TP5.1에 의미하는 바
메모리 소비
-
Nginx + PHP‑FPM
- Nginx 프로세스는 매우 가볍다.
- PHP‑FPM 프로세스는 메모리를 차지하지만
pm.max_children등 파라미터로 수를 제어할 수 있다. - 하나의 TP5.1 애플리케이션 PHP 프로세스는 대략 50 MB를 차지하며, 10개 프로세스는 약 500 MB 정도이다.
-
Apache (prefork) + mod_php
- 각 Apache 프로세스에 전체 PHP 환경이 포함돼 있어 메모리 사용량이 크게 증가하고, 고동시성 상황에서 자원이 쉽게 고갈된다.
정적 리소스
- Nginx는 순수 C 코드로
/public디렉터리 아래의 정적 파일(CSS, JS, 이미지)을 효율적으로 처리하므로 TP5.1 정적 리소스를 제공하는 최적의 방법이다.
상황별 권장 방안
| 상황 | 권장 방안 | 이유 |
|---|---|---|
| 대규모 트래픽 운영 환경 | Nginx + PHP‑FPM 사용 | 고동시성 처리 능력이 뛰어나고, 메모리 사용을 제어할 수 있으며, 정적 리소스 응답이 빠름 |
| 반드시 Apache 사용 | MPM을 prefork에서 event로 전환하고 PHP‑FPM을 사용해 mod_php 대신 적용 | Nginx와의 성능 격차를 크게 줄일 수 있음 |
반드시 Apache를 사용해야 한다면
MPM 모드를 event로 전환하고 PHP‑FPM을 사용한다. 예시 설정(httpd.conf):
LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
# PHP 요청을 PHP-FPM으로 전달
ProxyPassMatch "^/(.*\.php)$" "fcgi://127.0.0.1:9000/path/to/your/tp5/public/$1"
TP5.1 최적화
어떤 웹 서버를 사용하든 OPcache와 라우팅 캐시를 반드시 활성화한다. 이는 서버 교체보다 더 큰 성능 향상을 가져올 수 있다.
php think optimize:route
php think optimize:config
요약
TP5.1 시스템에서는 Apache를 Nginx로 전환하는 것이 대체로 질적인 도약을 제공한다. 특히 사용자 수가 증가할수록 서버는 더 안정적이고 응답이 빨라지며, 동시에 더 많은 온라인 사용자를 지원할 수 있다.
프로그래머를 위한 무료 도구 사이트