평소에는 정상적으로 작동하던 웹사이트가 갑자기 느려지거나 페이지가 열리지 않는 경우가 있습니다.
관리 화면에 접속하는 데 시간이 오래 걸리고 방문자가 많지 않은데도 서버가 버벅거린다면 서버 과부하를 의심해볼 수 있습니다.
특히 서버의 CPU 사용률이 계속 높은 상태로 유지되면 웹사이트 응답 속도가 느려지고 심한 경우 서비스가 일시적으로 중단될 수도 있습니다.
서버가 느려지는 이유는 다양하기 때문에 무작정 서버 사양부터 높이기보다 어떤 작업이 자원을 많이 사용하고 있는지 먼저 확인하는 것이 중요합니다.
서버 과부하란 무엇일까?
서버에는 CPU, 메모리, 저장 공간, 네트워크 등 처리할 수 있는 자원의 한계가 있습니다.
웹사이트 방문자의 요청이나 프로그램의 작업량이 서버가 처리할 수 있는 수준을 넘어가면 응답 속도가 떨어질 수 있습니다.
이러한 상황이 계속되면 페이지 로딩이 늦어지거나 접속 오류가 발생하기도 합니다.
자동차가 한꺼번에 몰리면 도로가 막히는 것처럼 서버에도 처리해야 할 작업이 지나치게 많아지면 병목 현상이 발생할 수 있습니다.
CPU 사용률이 높아지는 대표적인 이유
CPU는 서버에서 프로그램의 연산과 각종 요청을 처리합니다.
웹사이트 방문자가 갑자기 증가하면 서버가 처리해야 할 요청도 늘어나면서 CPU 사용량이 높아질 수 있습니다.
하지만 방문자가 많다고 해서 항상 CPU 사용률이 높아지는 것은 아닙니다.
특정 프로그램의 오류, 과도한 데이터베이스 작업, 백그라운드 작업, 잘못 설정된 플러그인 등도 CPU 자원을 많이 사용할 수 있습니다.
따라서 CPU 사용률만 보는 것보다 어떤 프로세스가 자원을 사용하고 있는지 함께 확인해야 합니다.
현재 CPU 사용 상태 확인하기
리눅스 서버에서는 top 명령어를 이용해 현재 실행 중인 프로세스와 CPU 사용 상태를 확인할 수 있습니다.
top
실행하면 여러 프로세스가 표시되고 어떤 작업이 CPU를 많이 사용하고 있는지 살펴볼 수 있습니다.
좀 더 보기 편한 화면을 원한다면 서버 환경에 따라 htop을 사용할 수도 있습니다.
다만 htop이 설치되어 있지 않은 서버도 있기 때문에 사용할 수 있는 환경인지 먼저 확인해야 합니다.
특정 프로세스의 CPU 사용량이 비정상적으로 높게 유지된다면 해당 프로그램이나 서비스에 문제가 없는지 살펴볼 필요가 있습니다.
갑작스러운 방문자 증가 확인하기
특정 게시물이 검색이나 SNS에서 노출되면서 짧은 시간에 많은 방문자가 들어오면 서버 부하가 증가할 수 있습니다.
이 경우 웹서버의 접속 기록이나 사용하는 분석 도구를 통해 방문자가 갑자기 늘었는지 확인해볼 수 있습니다.
일시적인 방문자 증가라면 서버가 정상 상태로 돌아오는지 지켜볼 수 있지만 반복적으로 과부하가 발생한다면 서버 자원이나 웹사이트 구조를 점검해야 합니다.
워드프레스 플러그인도 확인하기
워드프레스 사이트에서는 설치한 플러그인이 서버 자원 사용량에 영향을 줄 수 있습니다.
플러그인이 너무 많거나 특정 플러그인이 반복적인 작업을 수행하면 CPU와 데이터베이스 사용량이 증가할 수 있습니다.
최근 새로운 플러그인을 설치한 뒤 사이트가 느려졌다면 해당 시점부터 문제가 발생했는지 확인해보는 것이 좋습니다.
사용하지 않는 플러그인은 정리하고 필요한 플러그인도 최신 버전으로 유지하는 것이 좋습니다.
데이터베이스 작업이 많아진 경우
웹사이트가 커지면서 게시물과 댓글, 사용자 정보 등이 쌓이면 데이터베이스에서 처리해야 하는 작업도 많아집니다.
특정 기능이 데이터베이스에 지나치게 많은 요청을 보내는 경우 서버의 CPU 사용량이 증가할 수 있습니다.
사이트가 느려졌다고 해서 CPU만 확인하기보다 데이터베이스에서 오래 걸리는 작업이 있는지도 함께 살펴보는 것이 필요합니다.
캐시를 활용해 서버 작업 줄이기
웹페이지에 접속할 때마다 서버가 동일한 내용을 처음부터 다시 처리한다면 불필요한 자원이 사용될 수 있습니다.
캐시는 자주 요청되는 데이터를 일정 시간 저장해두었다가 다시 활용하는 방식입니다.
적절한 캐시를 사용하면 반복적인 서버 작업을 줄이고 페이지가 표시되는 시간을 단축하는 데 도움이 될 수 있습니다.
워드프레스에서는 호스팅 업체가 제공하는 캐시 기능이나 사이트 환경에 맞는 캐시 기능을 사용할 수 있습니다.
이미지 용량도 점검하기
고화질 이미지를 원본 크기 그대로 많이 사용하면 페이지에서 전송해야 하는 데이터가 증가합니다.
이미지 파일의 크기를 줄이고 웹사이트에서 필요한 크기에 맞게 사용하는 것이 좋습니다.
이미지 최적화만으로 CPU 문제가 모두 해결되는 것은 아니지만 페이지의 전체적인 로딩 부담과 데이터 전송량을 줄이는 데 도움이 됩니다.
불필요한 백그라운드 작업 확인하기
서버에서는 사용자가 직접 실행하지 않아도 일정한 시간마다 자동으로 작동하는 작업이 있을 수 있습니다.
백업이나 로그 정리, 데이터 처리와 같은 작업이 동시에 실행되면 특정 시간에 서버 부하가 증가할 수 있습니다.
매일 비슷한 시간에 CPU 사용률이 높아진다면 예약된 작업이 실행되고 있는지도 확인해볼 필요가 있습니다.
서버 재시작만 반복하면 해결될까?
서버가 느려졌을 때 재시작하면 일시적으로 CPU 사용량이 내려가면서 문제가 해결된 것처럼 보일 수 있습니다.
하지만 과부하를 발생시키는 원인이 그대로 남아 있다면 같은 문제가 다시 발생할 가능성이 있습니다.
따라서 재시작만 반복하기보다 CPU를 많이 사용하는 프로세스와 웹사이트의 요청량, 데이터베이스 상태 등을 확인해 원인을 찾는 것이 중요합니다.
서버 사양을 높여야 하는 시점
최적화를 했는데도 정상적인 방문자 증가로 CPU 사용률이 계속 높은 상태라면 현재 서버의 처리 능력이 부족할 가능성도 있습니다.
이때는 CPU나 메모리를 추가하거나 더 높은 사양의 서버로 변경하는 방법을 검토할 수 있습니다.
클라우드 서버를 이용하고 있다면 서비스에 따라 필요한 자원을 확장할 수 있습니다.
다만 프로그램 오류 때문에 CPU 사용률이 높은 상황이라면 서버 사양을 높여도 근본적인 문제가 해결되지 않을 수 있습니다.
CPU 숫자보다 원인을 먼저 확인하기
CPU 사용률이 순간적으로 높아졌다고 해서 반드시 서버에 문제가 생긴 것은 아닙니다.
중요한 것은 높은 사용률이 얼마나 오래 지속되는지, 어떤 프로세스가 CPU를 사용하고 있는지 확인하는 것입니다.
서버가 느려졌다면 CPU 사용률을 확인하고 방문자 증가, 실행 중인 프로그램, 데이터베이스, 플러그인, 자동 작업 등을 차례로 점검해보는 것이 좋습니다.
원인을 확인한 뒤 캐시 적용이나 불필요한 작업 정리, 프로그램 설정 변경 등의 방법으로 서버의 부담을 줄일 수 있습니다.
그래도 자원이 계속 부족하다면 그때 서버 사양을 조정하는 것이 효율적인 순서입니다.
답글 남기기