OpenLiteSpeed에서 PHP와 LSAPI 설정에 대해 배우면서, 어떻게 설정해야 할지 궁금해졌습니다. 그러나 서버 부하를 방지하기 위한 적절한 설정을 찾는 것이 어려워 다른 방법을 모색하던 중 Dynamic Scaling, 동적 확장 기능이 있다는 것을 알게 되었습니다.
여기서 동적 스케일링(Dynamic Scaling)은 주로 PHP 프로세스 수를 자동으로 조정하는 기능을 제공합니다. 이 기능은 서버의 부하를 감지하여 필요에 따라 자식 프로세스를 추가하거나 제거합니다.
예를 들어, 서버의 부하가 높을 때는 자동으로 PHP 프로세스를 확장하여 더 많은 요청을 처리할 수 있도록 하고, 부하가 낮아지면 불필요한 프로세스를 줄여 리소스를 절약할 수 있습니다.
하지만 OpenLiteSpeed는 완벽한 동적 스케일링 기능을 제공하지 않습니다. 이에 대한 해결책을 찾아본 결과, 완벽한 동적 스케일링을 위해서는 외부 도구가 필요하지만, 동적 확장은 가능하다는 것을 알게 되었습니다.
문서 내용을 살펴보면, OpenLiteSpeed는 동적 확장이 가능하지만, 완벽한 동적 스케일링을 위해서는 추가적인 리소스 관리와 서버 최적화가 필요합니다.라는 점을 확인할 수 있었습니다.
그러나 저처럼 서버에 대한 지식이 부족한 분들에게는 구성이 상당히 어려운 일이었습니다. 그래서 적용할 수 있는 동적 확장을 설정하는 방법을 알아보고 이번에 적용하게 되었습니다.
사이트 속도가 느리거나 시스템 자원(CPU, RAM)에 과부하가 발생하는 경우, 서버를 업그레이드하거나 동적 확장을 적용하여 프로세스를 효율적으로 관리해 보시기 바랍니다.
※ 아래의 설명된 설정으로 할 경우 CPU 부하가 생길 수 있습니다. 그래서 자신의 시스템 환경에 맞게 설정해야 합니다. 만약에 CPU 부하가 발생할 경우 원래 값으로 다시 설정하시기 바랍니다.
목차
External App설정 추가
브라우저에 자신의 도메인 또는 IP 주소 뒤에 :7080을 입력하면 OpenLiteSpeed Webadmin에 접속할 수 있습니다. 이후 ‘Server Configuration’으로 들어가 상단 메뉴에서 ‘External App’을 선택한 후, 위에 표시된 편집 버튼을 클릭하시면 됩니다.
LiteSpeed SAPI App 편집으로 들어가게 되면 Max Connections, Environment가 있는데 여기에서 설정을 하면 동적 확장을 적용할 수 있습니다.
Max Connections : 45
Enviroment : PHP_LSAPI_CHILDREN=30
LSAPI_AVOID_FORK=1
위의 내용으로 설정을 하면 되는데 어떤 의미가 있는지 알아보겠습니다.
Max Connections의미
- Max Connections는 PHP LSAPI가 동시에 처리할 수 있는 최대 연결 수를 의미합니다.
- 이 값은 PHP_LSAPI_CHILDREN 값과 밀접하게 연관되며, Max Connections ≥ PHP_LSAPI_CHILDREN이 되어야 효율적입니다.
PHP_LSAPI_CHILDREN=30의미
- 최대 30개의 PHP 프로세스를 동시에 실행할 수 있도록 설정합니다.
- 이 값은 서버의 CPU 및 메모리 성능에 따라 조정해야 합니다.
- 너무 높은 값으로 설정하면 서버 메모리 부족으로 인해 성능 저하가 발생할 수 있습니다.
LSAPI_AVOID_FORK=1 의미
- 필요할 때만 PHP 프로세스를 생성하고, 요청이 없으면 종료하여 리소스를 절약합니다.
- WordPress는 주로 짧은 PHP 요청을 다루므로, 이 설정은 프로세스를 줄이고 효율성을 높이는 데 유리합니다.
위의 설정은 저에게 맞춘 설정이기 때문에 자신의 시스템 환경에 맞게 수치를 조정해야 합니다. 아래의 설명을 참고하시면 됩니다.
최적의 설정 방법
서버의 CPU 코어 수와 메모리 용량을 기반으로 적절한 PHP_LSAPI_CHILDREN 값을 설정합니다.
- 2코어 CPU, 4GB RAM: PHP_LSAPI_CHILDREN=30 권장
- 4코어 CPU, 8GB RAM: PHP_LSAPI_CHILDREN=50 권장
트래픽 패턴을 고려하면,
- 낮은 트래픽: PHP_LSAPI_CHILDREN=10, Max Connections=15 정도
- 중간 트래픽: PHP_LSAPI_CHILDREN=30, Max Connections=45 정도
- 높은 트래픽: PHP_LSAPI_CHILDREN=50, Max Connections=75~100 정도
설정의 장점
- 리소스 효율성: 서버에 요청이 많을 때만 필요한 만큼의 PHP 프로세스를 생성하고, 부하가 적을 때 프로세스를 줄여 메모리 사용량을 최적화합니다.
- 응답 시간 개선: 많은 동시 요청을 처리할 수 있으므로, 방문자 수가 갑작스럽게 증가해도 응답 지연을 줄일 수 있습니다.
- 부하 방지: 너무 많은 요청이 들어올 경우, 프로세스 제한이 있어 CPU 및 메모리가 과부하 상태에 빠지는 것을 방지합니다.
‘Server Configuration’ 은 글로벌 설정이기 때문에 Virtual Host의 External App는 독립적으로 작동할 수 있습니다. 그래서 예상치 못한 동작이 발생할 수 있으므로, 두 군데 모두 같은 값으로 동적 확장 설정하는 것이 좋습니다.
Virtual Host도 똑같이 설정
Virtual Hosts로 들어간 후에 자신의 도메인을 선택 그 다음 Exteral App에서 편집으로 들어가시면 됩니다.
그 다음, 글로벌 설정과 마찬가지로 동적 확장 설정 값을 수정해 주시면 됩니다. 위의 설명을 참고하여 설정을 완료하셨다면, OpenLiteSpeed Webadmin의 왼쪽 상단에 있는 IP 주소를 클릭하여 서버를 재시작하시면 됩니다.
위의 설정에 대해 서버 환경과 트래픽 등 여러 요소에 대한 적절한 값을 찾는 것이 어려웠습니다. 그래서 CPU, RAM, 그리고 트래픽에 따른 설정 예시를 추가하였으니, 이 내용을 참고하여 설정을 진행해 주시기 바랍니다.
그리고 서버 부하는 사이트 속도를 느리게 하기 때문에 Cyberpanel, Top, Htop 같은 도구를 이용해서 주기적으로 확인을 하시기 바랍니다. 만약에 시스템에 부하가 생긴다면 위의 설명을 토대로 수치를 조정해 보시기 바랍니다.
▶ OpenLiteSpeed 리버스 프록시 설정 기본 구성 가이드