라이트세일(Lightsail)로 워드프레스를 운영하고 있는데 저녁에 갑자기 사이트가 느려지는 현상을 발견하게 되었습니다. 처음에는 일시적인 현상이라고 생각을 했지만 지속적으로 느려지는 현상이 생겨서 CPU 과부하가 일어난 것인지 확인을 해보았습니다.
그런데 몇 시간 전부터 CPU 과부하가 일어나고 있었고 남은 CPU 버스트 용량까지 바닥을 들어내고 있어서 급하게 인스턴스를 재부팅하였는데 처음에는 CPU가 안정적으로 바뀌었지만 5분 후에 다시 과부하가 일어났습니다.
그래서 예전에 해킹 공격을 당한 적이 있기 때문에 보안 플러그인을 통해서 스캔을 진행했는데 아무런 문제가 없었으며 트래픽이 높아진 결과일 수도 있기 때문에 방문자를 확인했는데 어제와 같았습니다.
워드프레스를 운영하면서 순간적으로 CPU 사용량이 증가한 적이 있었기 때문에 일시적인 현상이라고 생각했지만 지속되는 것을 보고 검색을 해서 같은 증상이 있는 글들을 찾았습니다.
외국 커뮤니티에 저와 같은 증상을 보이는 분들이 있었고 대처 방법을 올린 글을 참고하면서 순서대로 진행을 해보았습니다. 몇 가지를 진행했는데 CPU 과부하는 사라졌으며 현재까지 사용량이 증가하는 현상도 없습니다.
라이트세일(Lightsail)에서 CPU 과부하는 다양한 이유로 일어나지만 저와 같은 문제를 겪는 분들을 위해서 제가 적용한 방법을 정리해 보겠습니다.
목차
CPU 과부하
라이트세일(Lightsail) > 인스턴스 > 지표로 들어가게 되면 CPU 사용률을 볼 수 있습니다. 여기서 과부하가 일어나는지 확인을 할 수 있는데 저 같은 경우 18:30부터 급격하게 그래프가 올라간 것을 볼 수 있습니다.
이 상태가 지속되게 되면 남은 CPU 버스트 용량까지 사용하게 되기 때문에 발견하게 되면 대처를 해야 사이트가 느려지거나 멈추는 것을 방지할 수 있습니다. 그러면 순서대로 어떻게 대처를 했는지 알아보겠습니다.
CPU 상태 확인
라이트세일(Lightsail) 지표는 실시간이 아니기 때문에 빠른 결과를 알 수 없는데 모니터링 도구를 사용하게 되면 어떤 요소에서 CPU 사용량이 증가하는지 확인할 수 있습니다.
모니터링 도구는 아마존 지식 센터에 자세히 설명이 되어 있는데 그중에서 htop 도구를 사용하여 CPU 상황을 확인하였습니다.
- htop 도구 : Linux 용 대화식 실시간 프로세스 모니터링 애플리케이션으로 CPU 또는 코어별 사용량을 보여줍니다. 또한 이 도구는 메모리 및 스왑 사용량에 대한 의미 있는 텍스트 그래프를 제공합니다.
htop 도구는 바로 사용할 수 있는 것은 아니고 서버에 설치를 해야 하는데 아래의 방법으로 하시면 됩니다.
sudo apt install htop
라이트세일에서 인스턴스를 누르게 되면 SSH를 사용해서 연결이 있는데 클릭해서 들어가신 후에 위의 명령어를 입력하게 되면 htop을 설치할 수 있습니다.
htop
htop 설치를 완료한 후에 htop이라고 입력하게 되면 모니터링 도구가 실행이 되고 CPU 상황을 실시간으로 파악할 수 있습니다.
htop 도구를 실행하게 되면 위와 같은 화면이 나오게 되는데 여기서 실시간 CPU 상황을 확인할 수 있고 어떤 요소에서 CPU를 많이 사용하고 있는지 알 수 있기 때문에 대처를 할 수 있습니다.
php-fpm: pool www
htop 모니터링 도구를 실행해서 확인을 해본 결과 php-fpm: pool www라는 요소에서 CPU 사용량이 급증하는 것을 확인할 수 있었습니다.
제가 전문가는 아니기 때문에 어떤 역할을 하는 것인지 알 수 없었는데 검색을 해본 결과는 부하를 줄이기 위해서 사용하는 관리자로 빠른 처리를 위한 것이라고 합니다. (참고 : php-fpm 설명 게시물)
어떤 역할을 하는지는 검색을 통해서 대충 알게 되었지만 이것으로 인한 CPU 사용량이 증가한 이유는 알 수 없었습니다. 그러다 bitnami 문서에서 해답을 찾게 되었습니다.
애플리케이션별로 PHP-FPM 프로세스를 구성할 수 있습니다. 응용 프로그램이 많은 경우 과도한 CPU 사용량이 발생할 수 있습니다.
위의 내용을 보게 되면 제가 겪는 문제에 대한 글이기 때문에 bitnami 문서를 토대로 구성을 수정했습니다.
pm=ondemand
/opt/bitnmai/php/etc/php-fpm.d/www.conf PHP-FPM 경로로 들어가서 pm=dynamic 을 pm=ondemand로 바꾸었습니다. 해당 구성으로 바꾸게 되면 필요할 때 php-fpm이 자동으로 시작하게 됩니다.
이 밖에 bitnami 문서에서는 2개의 파일을 수정하라고 나오는데 제가 쓰고 있는 라이트세일에서는 해당 파일을 찾을 수가 없었습니다. 그래서 해당 파일이 있다면 bitnami 문서의 내용을 보시고 구성을 수정해 보시기 바랍니다.
sudo /opt/bitnami/ctlscript.sh restart php-fpm
구성을 수정하였다면 라이트세일에서 SSH를 사용해서 연결에서 위의 명령어를 입력해서 php-fpm을 재시작해주시면 됩니다.
그러면 htop 모니터링을 보게 되면 CPU가 다시 줄어든 것을 확인할 수 있을 것입니다. 만약에 해당 방법으로도 CPU 과부하가 사라지지 않는다면 아래의 문서를 참고해 보시기 바랍니다.
플러그인 비활성화
위의 방법으로 2개의 사이트 중에서 하나는 CPU 과부하가 사라졌지만 다른 하나는 여전히 과부하가 일어나고 있었습니다. 그래서 워드프레스를 할 때 오류가 발생하면 확인하게 되는 플러그인 비활성화를 해보았습니다.
그 결과 Wordfence security 보안 플러그인을 비활성화하고 일정 시간이 지난 이후에 과부하 현상이 사라지는 것을 확인할 수 있었습니다. 그래서 검색을 해본 결과 비슷한 사례가 있는 것을 볼 수 있었습니다.
- 보안 프로그램으로 인한 문제 질문 : wordfence and PHP-FPM high cpu usage
그래서 그 동안 사용했던 Wordfence security 보안 플러그인을 과감히 삭제를 하고 다른 보안 플러그인을 설치하면서 CPU 과부하로 인한 소동을 마무리할 수 있었습니다.
위의 내용은 정확하게 해결하는 방법이 아닐 수 있습니다. 하지만 저처럼 전문가가 아니라면 어떻게 수정을 했는지 참고하는 것만으로도 자신의 문제를 파악해서 해결을 하실 수 있을 것입니다.
▶ AWS Lightsail 최적화를 위한 HTTP/2 적용하기