XAMPP Apache 에서 FastCGI 옵션, 지시문 설정 방법

XAMPP 아파치 서버에서 PHP 속도개선을 위해 Apache 2.0 핸들러 에서 fastCGI 로 변경하였다면 PHP 관련 지시문 설정을 php.ini 이외에도 fastCGI에도 해줘야 합니다.

해당 설정을 위해 httpd-xampp.conf 파일을 열어주세요. XAMPP를 사용하고 계신 것이 아니라면 httpd.conf 파일 혹은 include 파일 / 폴더에 해당 내용이 있을 수 있습니다.

이번 글은 아래의 링크 PHP 속도 개선 / 윈도우 웹서버 XAMPP FastCGI 적용방법에서 부터 계속되는 이야기 입니다.

FastCGI 지시문

#
# PHP-Module setup
#
LoadFile "/xampp/php/php8ts.dll"
LoadFile "/xampp/php/libpq.dll"
LoadFile "/xampp/php/libsqlite3.dll"
LoadModule fcgid_module modules/mod_fcgid.so
<IfModule fcgid_module>
	FcgidInitialEnv PATH "/xampp/php"
	FcgidInitialEnv SystemRoot "C:/Windows"
	FcgidInitialEnv SystemDrive "C:"
	FcgidInitialEnv TEMP "/xampp/tmp"
	FcgidInitialEnv TMP "/xampp/tmp"
	FcgidInitialEnv windir "C:/windows"
	FcgidIOTimeout 64 			
	FcgidConnectTimeout 16	
	FcgidMaxRequestsPerProcess 1000 	
	FcgidMaxProcesses 3 			
	FcgidMaxRequestLen 8131072 		 
	# Location php.ini:
	FcgidInitialEnv PHPRC "/xampp/php"
	FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000 
	<Files ~ "\.php$">
		Options Indexes FollowSymLinks ExecCGI 
		AddHandler fcgid-script .php
		FcgidWrapper "/xampp/php/php-cgi.exe" .php
	</Files>
</IfModule>

FcgidIOTimeout 64

이 설정은 FastCGI 프로세스가 응답을 생성하는 데 소요되는 최대 시간을 정의합니다. 일반적으로 이 시간이 초과되면 웹 서버는 해당 요청을 종료하고 오류를 발생시킵니다.

보통은 이 설정을 조정하여 웹 애플리케이션이 특정 작업을 완료하는 데 필요한 시간에 맞게 설정합니다.
더 높은 값으로 설정하면 긴 처리 시간이 필요한 작업에 대해 더 많은 여유 시간을 제공할 수 있지만, 동시에 더 오랜 시간 동안 클라이언트 요청을 처리하게 되므로 서버 리소스 관리에 유의해야 합니다.

FcgidConnectTimeout 16

시간 초과 연결 / 이는 Windows에서 FastCGI 응용 프로그램에 연결을 시도하는 동안 모듈이 대기하는 최대 시간입니다

Apache 웹 서버에서 FastCGI 프로세스 간의 연결 시간 제한을 설정하는 디렉티브입니다. 이 디렉티브는 프로세스가 서버에 연결되는 데 허용되는 시간을 지정합니다. 만약 지정된 시간 동안에 연결이 이루어지지 않으면, 연결 시간 초과 오류가 발생합니다.

위의 16값으로 설정하면 FastCGI프로세스가 서버에 연결되는 데 최대 16초까지 허용됩니다. 이 값을 조절하여 서버의 요구에 맞게 연결 시간을 조정해 보세요.

FcgidMaxRequestsPerProcess 1000 

이 옵션은 하나의 FastCGI 프로세스가 처리할 수 있는 최대 요청 수를 지정합니다. 이 설정을 사용하면 웹 서버의 안정성을 향상시키고 메모리 누수를 방지할 수 있습니다.

예를 들어, “FcgidMaxRequestsPerProcess”를 1000으로 설정하면 각 프로세스가 1000개의 요청을 처리한 후에 재시작됩니다.

이를 통해 장기간 실행되는 프로세스가 불안정해지는 것을 방지하고 메모리 소비를 제한할 수 있습니다.

다만 여러개의 요청을 한번에 처리해야하는 경우 (예를 들면 phpMyadmin 에서 DB복원) 이 값을 크게 늘려주셔야 합니다.

FcgidMaxProcesses 3      

이 설정은 FastCGI 프로세스의 최대 개수를 제어합니다. FastCGI는 웹 서버와 외부 프로세스 간의 통신을 효율적으로 처리하여 웹 서버의 성능을 향상시키는 데 사용됩니다.

설정 값은 서버의 성능, 리소스 및 사용 중인 애플리케이션에 따라 다르며, 너무 높게 설정하면 서버 부하가 발생할 수 있습니다. 설정을 변경할 때는 신중하게 조절하는 것이 좋습니다.

FcgidMaxRequestLen 8131072

이 매개변수는 FastCGI 프로세스에 전송되는 요청의 최대 길이를 제어합니다. 최대 HTTP 요청 길이 /요청 본문의 크기가 이 크기를 초과하면 요청이 실패하고 500 Server Error. 가 발생합니다.

phpmyadmin 에서 SQL 명령문이 길어지면 오류가 발생하는데 이 값을 늘려주면 해결됩니다.

PHP_FCGI_MAX_REQUESTS 1000    

PHP_FCGI_MAX_REQUESTS는 PHP FastCGI 프로세스가 처리할 수 있는 최대 요청 수를 나타내는 환경 변수입니다.

보통 이 변수는 PHP FastCGI프로세스가 메모리 누수나 성능 문제로부터 보호하기 위해 설정됩니다. 지정된 최대 요청 수에 도달하면 PHP FastCGI프로세스가 종료되고 새로운 프로세스가 시작됩니다.

이 변수를 설정하면 일정 주기 동안 동작한 후에 프로세스가 재시작되므로 장기 실행되는 웹 애플리케이션에서 메모리 문제를 방지할 수 있습니다.

이 값을 1000개 셋팅을 하면 각 FastCGI 프로세스가 1000개의 요청을 처리한 후에 종료되고 새로운 프로세스가 시작됩니다.
이 숫자는 애플리케이션의 요구 사항에 따라 조절될 수 있습니다.

Leave a Comment