웹 서버와 PHP 어플리케이션을 운영할 때, 서버 리소스를 적절히 제한하는 것은 중요합니다. Nginx와 PHP를 함께 사용하는 경우, Nginx에서 PHP 서버 리소스를 제한하는 방법을 알아보겠습니다.
1. PHP-FPM 설정 변경
PHP-FPM (FastCGI Process Manager)을 사용하여 PHP 프로세스를 관리하는 경우, 각각의 PHP 프로세스에 대한 제한을 설정할 수 있습니다. 아래는 www.conf
파일에서 세부적인 설정을 변경하는 예시입니다.
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
위 설정에서, pm.max_children
은 최대 PHP 프로세스 개수를 나타내며, pm.max_requests
는 각 PHP 프로세스가 처리할 수 있는 요청 수를 의미합니다.
2. Nginx Worker Connections 설정
Nginx의 Worker Connections 설정을 통해 PHP 프로세스와의 연결 수를 제한할 수 있습니다.
events {
worker_connections 1024;
}
위의 설정은 단일 worker 프로세스가 처리할 수 있는 최대 연결 수를 나타냅니다.
3. PHP 자원 제한
PHP 스크립트의 CPU 및 메모리 사용량을 제한하는 방법도 존재합니다. php.ini
파일을 수정하여 아래와 같은 설정을 추가할 수 있습니다.
; Maximum execution time of each script, in seconds
max_execution_time = 30
; Maximum amount of memory a script may consume
memory_limit = 128M
위의 설정에서, max_execution_time
은 각 스크립트의 최대 실행 시간을 나타내며, memory_limit
는 각 스크립트가 사용할 수 있는 최대 메모리 양을 의미합니다.
요약
Nginx와 PHP를 함께 사용할 때, 각 서버 및 어플리케이션의 리소스를 적절히 제한하는 것은 성능 및 안정성을 유지하는 데 중요합니다. PHP-FPM 및 Nginx의 설정을 조정하여 적절한 리소스 제한을 설정하는 것은 웹 서버 운영의 핵심적인 부분입니다.
참고 자료
제안 사항이 있으시면 언제든지 말씀해주세요.