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개의 요청을 처리한 후에 종료되고 새로운 프로세스가 시작됩니다.
이 숫자는 애플리케이션의 요구 사항에 따라 조절될 수 있습니다.