사이트가 하루도 못 가고 다운된다.
“서버에 연결할 수 없습니다” 라거나
“Service Unavailable” 이라거나
“데이터 베이스 연결 중 오류” 라는 에러 메시지를 띄우면서 서버가 멈춘다.
–
–
현재 2개의 사이트를 운영중이며,
모두 워드프레스 6.1.1 버전과 PHP 7.4가 적용되어 있고
서버는 AWS 라이트세일의 3.5$ 요금제를 사용중이다.
–
2개 사이트 모두 동일한 서버와 워드프레스, PHP 버전을 적용중인데,
유독 이 사이트가 연결되어있는 인스턴스(서버)만 문제가 발생한다.
기존에 작성한 “데이터베이스 연결 중 오류 해결” 글과 이어지지만
이미 문제를 해결한 상태에서 동일한 증상(서버 다운)이 더 빈번하게 일어났기 때문에
조금 더 명확하게 문제를 파악하고 해결하고 싶어졌다.
데이터베이스 연결 중 오류 해결
–
AWS 라이트 세일 내 인스턴스 선택 – [관리] – [지표] 순으로 이동.
지표 항목에서 서버에 할당된 CPU의 사용률을 1시간, 6시간, 1일, 1주, 2주 순으로 확인할 수 있다.
정상적인 서버의 CPU 사용률
CPU는 “지속 가능 영역” 과 “버스트 가능 영역”으로 나뉘는데,
특이사항이 없는 한 과부하가 없는 정상 서버의 경우 “지속 가능 영역”에서 CPU 사용률이 지속된다.
GRAFIK.KR 의 서버 CPU 사용률
내 사이트 (GRAFIK.KR)의 경우 CPU 사용률이 한 동안 “지속 가능 영역”에서 지속되다
특정 시간에 사용률이 미친듯이 펌핑된다.
최대 77.53% 까지 솟아 오른걸 볼 수 있었는데
이 버스트 영역을 침범한 CPU 사용률이 한번 발생하면
잠시 후 서버가 다운된다.
이후 “지속 가능 영역” 으로 CPU 사용률이 돌아온다해도 다운된 서버는 정상화 되지 않는다.
다운 된 상태에서 서버 [재부팅]은 먹히지 않고,
인스턴스 [중지] – [재시작] 순으로 재가동해주면 잠시나마 정상 작동 되지만,
이내 하루도 못 버티고 버스트 영역 침범으로 다시 다운이 되며 악순환이 반복된다.
CPU 버스트 후 사이트가 멈춘 상태
문제 해결
–
문제 1. 불특정 시간에 랜덤하게 서버 과부하가 발생하며, 이후 서버가 다운되며 사이트(1)이 멈춤
문제 2. 동일한 스펙의 사이트(2)는 정상
–
해결 옵션 1. 서버 과부하가 발생하는 원인을 찾아 제거함
해결 옵션 2. 현재 가장 저렴한 하위 옵션의 요금제를 사용중이므로 CPU 용량이 더 높은 상위 요금제로 업그레이드 한다.
해결 옵션 3. x같은 서버 방식 (CPU 버스트등)을 채택한 라이트세일을 버리고 카페24등의 서버로 이전한다.
–
내 기준에서 옵션2는 선택하더라도 서버 과부하가 안 생긴다는 보장이 없으므로 패스
옵션3은 잠재적 선택 상태이지만 일단 보류.
짜증나지만 해결 못하면 잠이 안오므로 옵션 1로 타협함.
–
동일한 스펙의 사이트(2)가 정상 작동 되고 있으므로,
AWS 서버문제, PHP 메모리 부족은 제외.
워드프레스의 버전도 차치하고 당연하겠지만 범인은 적용된 테마와 플러그인으로 예상함.
설치된 38개의 플러그인들 중 사이트(2)와 중복되는 정상적인 플러그인들은 패스하고,
겹치지 않거나, 버전 업데이트가 오랫동안 되지 않은 플러그인들을 대상으로 비활성화를 진행했다.
*플러그인을 1~3개씩 비활성화 후 하루 정도 CPU 버스트 영역을 침범하는지 체크해야 했기 때문에 시간이 조금 소요됐다*
현재 사용중인 테마를 작동하기 위해서 필수로 활성화를 해야하는 플러그인들이 있다.
테마 개발진에서 테마를 적용하면 강제로 설치 및 활성화를 유도하는 플러그인들인데
“Regenerate Thumbails” 플러그인도 이에 해당된다.
테마와 한 몸인 이런 플러그인들을 비활성화 하게 되면 사이트 레이아웃이 깨지거나
정상 작동 되지 않는다.
따라서 버전이 오래되서 현재 워드프레스 버전과 정상적으로 호환되는지 불투명하지만
사이트에 테마를 적용하기 위해선 필수로 활성화를 해둬야 한다.
때문에 이 플러그인이 현재 버전의 워드프레스나 다른 호환되는 플러그인들과 충돌이 발생해
과부하가 발생된거라면 현재 시점에서 이 테마를 포기해야 할 수도 있다.
–
–
플러그인으로 해결이 안되면 테마 교체까지 감안하고 있었지만
교체하게 되면 블로그 글 내부 세팅을 비롯해 여러가지를 손봐야 하기 때문에
정말 귀찮고 거기까지는 안갔으면 하고 내심 바라고 있었다.
그래서일까. 역시나 범인은 “Advanced Custom Fields PRO” 플러그인으로 체크되었고,
아마도 현재 이 플러그인의 버전과 사용중인 테마나 다른 플러그인 또는 현재 버전의 워드프레스와 충돌이 생기고 있는 것 같다.
–
결론,
Advanced Custom Fields PRO 플러그인이 문제를 일으켜
사용중인 AWS 라이트 세일의 서버 CPU에 과부하를 일으켰고,
(이 새끼가 어떤 방식으로 불특정 시점에 왜 과부하를 일으켰는지에 대해선 나의 영역 밖이라고 느껴짐)
저렴한 요금제에 할당된 사용률을 훌쩍 넘겼으므로 서버가 다운됨.
일단 문제는 해결했지만,
x같은 CPU 할당량을 적용한 라이트세일 덕분에
동일한 문제가 또 생길 수도 있다는 거.
–
이제 한번만 더 “데이터베이스 연결 중 오류” 가 뜨면 서버 폭파시키고
이전하거나 다른 방식으로 해결책을 찾아야 할 것 같다.
씨~~발!!!