모든 웹 호스팅 계정에는 서버에 내장된 커널 수준 기술인 CloudLinux LVE(경량 가상 환경)에 의해 리소스 제한이 적용됩니다. 이 제한은 모든 웹사이트가 할당된 리소스를 공정하고 동등하게 사용할 수 있도록 확인합니다.
이 리소스에는 CPU, 물리 메모리, 엔트리 프로세스, 활성 프로세스 수가 포함됩니다. 이러한 리소스의 허용 값과 소프트 및 하드 버스트 값은 허용 사용 정책에서 확인할 수 있습니다.
계정이 이러한 한도에 지속적으로 도달하면 이를 리소스 과다 사용이라고 합니다. 이로 인해 사이트 성능 저하, 오류 메시지, 계정 내 사이트의 타임아웃 등이 발생할 수 있습니다.
참고: 호스팅 계정의 한 도메인이 리소스 한도를 초과하면 동일한 계정에 호스팅된 다른 모든 도메인도 영향을 받게 됩니다. 이들은 동일한 리소스 풀을 공유하기 때문입니다.
이 글은 리소스 과다 사용을 식별하고 해결하는 데 도움이 됩니다.
cPanel에서 호스팅 계정 리소스 사용량을 확인하려면, 오른쪽에 표시된 통계 섹션을 확인하세요:

참고: 호스팅 계정 리소스 한도에 대한 알림은 Spaceship 계정 내에서도 받을 수 있습니다. 더 자세한 정보는 cPanel 계정의 "호스팅 사용량" 메뉴를 참고하세요.
그리고 허용 사용 정책 위반 사항은 “호스팅 관리자” 메뉴 > 해당 호스팅 패키지 옆의 “관리” 클릭 > 호스팅 사용량 섹션 > 보고서 로그 하위 섹션에 나열됩니다.
주요 리소스 지표와 이들이 사이트 성능에 미치는 영향을 살펴보겠습니다:
CPU 사용량은 할당된 CPU 파워 중 어느 정도가 사용되고 있는지를 나타냅니다. 호스팅 계정의 전체 용량 대비 백분율로 표시됩니다.
CPU 사용량이 100%에 도달하면, 계정이 할당된 모든 리소스를 소모하고 있다는 의미입니다. 이로 인해 새로운 프로세스는 기존 프로세스가 종료될 때까지 지연(슬립)됩니다. 이는 눈에 띄는 속도 저하를 유발할 수 있으며, 심한 경우 사이트가 타임아웃될 수 있습니다.
이는 LVE(경량 가상 환경) 내에서 프로세스가 요청할 수 있는 메모리 양을 의미합니다.
프로세스가 메모리 할당을 시도할 때 CloudLinux는 전체 가상 메모리 사용량이 설정된 한도 내에 있는지 확인합니다. 한도를 초과하면 새로운 메모리 할당이 차단되어 일반적으로 프로세스가 실패하게 됩니다.
물리 메모리는 계정에 할당된 실제 RAM을 나타냅니다. 가상 메모리(스왑 파일 등 디스크 저장소를 사용하는 경우가 많음)와 달리, 물리 메모리는 실시간으로 활성 작업을 처리합니다.
예를 들어, 대용량 게시물을 발행하면 일시적으로 모든 물리 메모리를 사용할 수 있습니다. 이로 인해 단기적으로 속도가 느려질 수 있지만, 작업이 완료되면 사용량은 일반적으로 정상으로 돌아옵니다.
물리 메모리 사용량이 한도에 도달하면 웹사이트에서 PHP 오류가 발생할 수 있습니다. 드물게 CloudLinux 오류 페이지가 나타날 수 있습니다. 이러한 문제는 일반적으로 짧게 지속되며, 사용량이 임계값 아래로 떨어지면 자동으로 해결됩니다.
엔트리 프로세스는 계정에 동시에 진입하는 프로세스 수를 나타냅니다. 사용자가 실행하는 각 PHP 또는 CGI 스크립트가 엔트리 프로세스를 시작합니다. 종종 "허용 방문자 수"로 오해되지만, 대부분의 경우 프로세스가 매우 빠르게 실행 및 완료되기 때문에 여러 사용자가 있어도 한도에 도달할 가능성은 낮습니다. 단, 갑작스러운 트래픽 급증이 있을 경우는 예외입니다.
이 지표에는 PHP, SSH, 크론 작업뿐만 아니라 계정에서 생성된 모든 프로세스가 포함됩니다. 전체 활동을 반영하는 더 넓은 한도입니다.
사용량이 많아도 대부분의 비-PHP 프로세스는 짧고 빠르게 종료되기 때문에 이 숫자는 보통 낮게 유지됩니다.
I/O 사용량은 계정이 생성하는 디스크 활동량을 측정합니다. 데이터 읽기 또는 쓰기 작업(백업, 파일 업로드 등)은 모두 이 한도에 포함됩니다.
모든 사용자의 공정한 성능을 위해 각 계정에는 디스크 속도 제한이 있습니다. 이 한도에 도달하면 프로세스는 계속 실행되지만 더 느려집니다.
대부분의 경우, 대용량 사이트 백업과 같이 디스크 집약적인 작업을 수행하지 않는 한 I/O 사용량을 인식하지 못할 수 있습니다.
호스팅 계정이 특정 리소스 한도에 도달하면, 첫 번째 단계는 과다 사용에 기여하는 프로세스를 식별하는 것입니다.
문제가 몇 분 이상 지속된다면, SSH를 사용하여 스파이크 시점에 계정에서 실행 중인 활성 프로세스를 확인할 수 있습니다:
호스팅 계정의 SSH가 활성화되어 있는지 “셸 관리” cPanel 메뉴에서 연결 상태를 확인하세요. SSH가 비활성화되어 있다면, 이 기사의 단계를 따라 활성화할 수 있습니다.
cPanel의 터미널 메뉴로 이동하여 다음 명령어 중 하나를 실행하면 계정의 활성 프로세스를 확인할 수 있습니다:
- ps faux
- top -c
이후 호스팅 계정 리소스(CPU, 가상 메모리 등)를 가장 많이 사용하는 프로세스 목록이 표시됩니다. 작업 수와 상태(활성, 슬립, 중지 여부)도 명령어 출력에 나타납니다.
“top -c” 명령어 출력 예시와 올바른 해석 방법을 안내해 드리겠습니다:

이러한 출력 내용을 읽는 간단한 가이드입니다:
첫 번째 줄 - 현재 시간, 마지막 부팅 이후 경과 시간, 로그인된 사용자 세션, 평균 시스템 부하(1분, 5분, 15분 기준)를 지정합니다.
두 번째 줄 - 호스팅 계정 내 모든 프로세스(실행 중, 슬립, 중지, 좀비(종료되었으나 제대로 제거되지 않은 프로세스))를 나열합니다.
세 번째 줄 - CPU 사용률(%) 정보를 제공합니다. 여기서:
us = 사용자 프로세스
sy = 시스템 프로세스
ni = 우선순위 업그레이드 nice
wa = I/O 완료 대기 시간
hi = 하드웨어 인터럽트
si = 소프트웨어 인터럽트
st = 하이퍼바이저 작업에 의해 가상 머신에서 빼앗긴 시간
네 번째 및 다섯 번째 줄 - 메모리 사용량(RAM): 전체, 사용 중, 여유, 버퍼를 나타냅니다.
다음 행들은 현재 프로세스에 대한 세부 정보를 제공합니다:
PID - 프로세스 ID
USER - 프로세스 소유자인 cPanel 사용자
PR - 프로세스 우선순위
NI - 프로세스의 nice 값
VIRT - 프로세스가 사용하는 가상 메모리
RES - 프로세스가 사용하는 물리 메모리
SHR - 프로세스가 사용하는 공유 메모리
S - 프로세스 상태(S - 슬립, D - 인터럽트 불가 슬립, R - 실행 중, T - 중지, Z - 좀비)
%CPU - 해당 프로세스가 사용하는 CPU 비율
%MEM - 해당 프로세스가 사용하는 물리 메모리 비율
TIME+ - 프로세스가 사용한 총 CPU 시간
COMMAND - 프로세스 이름
해킹이 의심되는 상황에서 프로세스를 종료하기 전에 cPanel 계정의 크론 작업 메뉴에서 기존 크론 작업을 검토하세요. 의심스러운 항목이나 확실하지 않은 크론 작업이 있다면, 잠재적으로 위험한 스크립트 실행을 방지하기 위해 삭제하는 것이 좋습니다.
문제를 일으키는 특정 프로세스를 확인했다면, “Terminal” 메뉴에서 kill -9 PID SSH 명령어를 실행하여 종료할 수 있습니다. 여기서 PID는 앞 단계에서 확인한 프로세스 ID입니다.
필수 시스템 프로세스를 제외한 모든 프로세스를 종료하려면 다음 명령어를 사용할 수 있습니다:ps aux | grep -v 'bin/bash' | awk '{ print $2 }' | grep -v PID | xargs kill -9
다음으로, 현재 실행 중인 MySQL 프로세스를 식별하세요.
cPanel 계정 전체(1) 또는 MySQL 사용자별(2)로 모든 MySQL 프로세스를 확인할 수 있습니다.
이를 위해 cPanel의 터미널을 열고 다음 명령어 중 하나를 실행하세요:
호스팅 계정 전체의 MySQL 프로세스를 확인하려면:mysql -u $CPANEL_USER -p -e "SHOW PROCESSLIST;"
MySQL 사용자의 MySQL 프로세스를 확인하려면:mysql -u $MYSQL_USER -p -e "SHOW PROCESSLIST;"
(1)번의 경우 “CPANEL_USER”를 cPanel 사용자명으로, (2)번의 경우 “$MYSQL_USER”를 해당 MySQL 데이터베이스 사용자명으로 바꿔서 각 MySQL 사용자별로 프로세스를 확인하세요.
그런 다음, (1)번은 cPanel 계정 비밀번호, (2)번은 해당 데이터베이스 사용자 비밀번호를 입력하세요:

마지막 단계는 특정 데이터베이스 사용자의 MySQL 프로세스를 종료하는 것입니다. 이 작업은 저희 지원팀만 수행할 수 있습니다. 언제든지 문의해 주시면 기꺼이 도와드리겠습니다.
문제가 몇 초만 지속된다면, 해당 프로세스를 식별하기 어려울 수 있습니다. 이렇게 짧은 시간에는 데이터가 기록되지 않기 때문입니다.
하지만 언제든지 cPanel의 리소스 사용량 메뉴에서 과거 추세를 확인할 수 있습니다. 이를 통해 패턴을 파악하거나 어떤 리소스가 한도에 근접하고 있는지 확인할 수 있습니다:

자주 한도에 도달하는 리소스에 대한 메시지는 메뉴를 열자마자 > “대시보드” 섹션 아래에 정확한 한도와 함께 표시됩니다:

메뉴의 현재 사용량 섹션에서 기간 드롭다운을 사용해 기간을 선택하고 해당 기간 동안 계정 리소스가 어떻게 사용되었는지 확인하세요:

선택하면 자세한 통계가 다이어그램과 표로 표시됩니다:


위 표에 나열된 값에 대한 간단한 안내입니다:
CPU – CPU 한도
vMEM/vM – 가상 메모리 한도
pMEM/pM – 물리 메모리 한도
EP – 엔트리 프로세스
nPROC/nP – 프로세스 수
IO – 입출력 한도
A – 평균 사용량
L – 계정에 설정된 한도
F – 실패
cPanel에서 활성 프로세스를 중지하면 성능 문제를 해결하는 데 도움이 될 수 있지만, 신중하게 진행해야 합니다. 새로운 문제가 발생할 수 있기 때문입니다. 아래는 유의해야 할 주요 사항입니다:
데이터 무결성: 프로세스를 강제로 종료하면 데이터 무결성이 손상될 수 있습니다. 특히, 해당 프로세스가 계정 내 데이터 쓰기 또는 업데이트와 관련된 경우 더욱 그렇습니다. 종료 전에 프로세스가 중요한 데이터베이스 작업과 연결되어 있지 않은지 확인하는 것이 좋습니다.
불완전한 트랜잭션: 작업 중간에 프로세스를 중지하면 트랜잭션이 완료되지 않아 데이터베이스 상태에 문제가 발생할 수 있습니다. 심한 경우 데이터 손상이나 손실로 이어질 수 있습니다.
서비스 중단: MySQL 관련 프로세스 등 일부 프로세스는 핵심 서비스에 매우 중요합니다. 이를 종료하면 일시적인 서비스 중단이 발생하고 웹사이트 기능에 영향을 줄 수 있습니다.
저장되지 않은 변경 사항: 구성이나 설정을 관리하는 프로세스가 변경 사항 저장 전에 종료되면 기능이나 애플리케이션 동작에 영향을 줄 수 있습니다.
리소스 할당: 프로세스를 종료하면 시스템 리소스를 확보할 수 있지만, 높은 사용량의 근본 원인을 해결하지는 못합니다. 문제가 반복되지 않으려면 더 깊은 분석이 필요합니다.
애플리케이션 안정성: 웹 앱과 연결된 프로세스를 중단하면 앱이 불안정해질 수 있습니다. 조치를 취하기 전에 프로세스의 작동 방식을 이해하는 것이 중요합니다.
로깅 및 모니터링: 일부 프로세스는 로깅 또는 시스템 모니터링에 관여합니다. 이를 종료하면 이러한 기능이 중단될 수 있으므로, 중요한 로그와 모니터링 도구가 계속 작동하는지 확인하세요.
리소스 과다 사용 또는 악성 활동이 의심되는 등 중요한 상황에서는 위험을 감수하고 프로세스를 종료해야 할 수도 있습니다. 그러나 항상 조치 전 잠재적 영향을 신중히 고려하세요.
데이터 백업하기: 중요한 변경을 하기 전, 특히 데이터베이스 작업 시에는 항상 백업을 생성하세요.
가능하다면 제어된 종료 사용: 데이터 손실이나 손상을 줄이기 위해 프로세스를 점진적으로 종료하도록 하세요.
악성 구성요소 비활성화: 웹사이트의 특정 부분(예: 플러그인 또는 테마)이 악성 프로세스를 생성한다고 의심되면, 추가 피해를 막기 위해 즉시 비활성화하세요. 확실하지 않은 경우, 전문가와 함께 의심스러운 활동을 확인하세요.
유지보수 모드 사용: 사이트를 임시로 유지보수 모드로 전환하면 특정 프로세스가 자동으로 다시 생성되는지 확인하는 데 도움이 될 수 있습니다.
면밀히 모니터링: 프로세스를 종료한 후에는 시스템의 동작을 주의 깊게 관찰하고, 예기치 않은 문제에 대비해 신속히 대응할 준비를 하세요.
어떤 프로세스가 계정의 리소스 한도에 도달하게 하는지 파악했다면, 다음과 같은 일반적인 방법으로 사용량을 줄여보세요:
트래픽 급증: 계정에 활성 프로세스가 너무 많았던 시점을 확인하려면 Resource usage 메뉴 > Snapshots > HTTP queries 탭을 여세요:

출력 결과에 요청이 많음(예: index.php 페이지로)이 표시된다면, 이는 웹사이트에 트래픽이 많기 때문일 수 있습니다(예: 방문자 또는 봇).
자세한 방문자 분석을 위해 cPanel의 Awstats 및 Visitors 메뉴를 확인하여 정확한 원인을 찾으세요. 트래픽이 갑자기 증가했다면 리소스 사용량이 높아진 원인일 수 있습니다. 방문자 수가 꾸준히 증가하고 제한이 계속된다면 현재 호스팅 플랜을 검토하고 업그레이드할 시기일 수 있습니다.
Awstats 메뉴의 Statistics 섹션에서 높은 CPU 사용의 원인을 확인할 수 있습니다. 도메인명 옆의 “View” 버튼을 클릭하면 확인할 수 있습니다:

참고: Awstats 메뉴의 데이터는 실시간으로 업데이트되지 않으며, 월별 통계만 제공됩니다. 통계 데이터가 언제 업데이트되었는지 반드시 확인하여 정보가 본인의 상황과 관련 있는지 확인하세요. 이 정보는 “Last Update” 줄에서 확인할 수 있습니다.
접속하면 웹사이트의 특정 요소가 얼마나 많은 대역폭을 사용하는지에 대한 자세한 통계를 볼 수 있습니다. 예시:
알 수 없는 봇: 이러한 트래픽이 예상되지 않는 경우, robots.txt 파일을 통해 차단하거나(예: Googlebot), .htaccess 파일과 User-Agent 문자열을 이용해 강력하게 차단할 수 있습니다.
참고: 이러한 변경은 웹사이트의 SEO에 영향을 줄 수 있습니다. 진행 여부가 확실하지 않다면 SEO 전문가와 상담하는 것이 좋습니다.
이미지: 하나의 이미지에 많은 요청이 있을 경우, 해당 이미지에 DDoS 또는 자체 DoS 공격이 있을 수 있습니다.
페이지: 웹사이트 페이지나 그 위에 올려진 상품도 DDoS 공격의 영향을 받을 수 있습니다.
파일.
다운로드된 파일 등
최근 웹사이트 변경 사항: 리소스 사용 문제를 처음 겪는 경우, 웹사이트에 최근 적용된 업데이트나 변경 사항을 검토하세요. 이러한 변경이 부하 증가에 영향을 줄 수 있습니다.
새 플러그인 또는 테마: 최근에 새 플러그인이나 테마를 설치했다면, 해당 기능을 비활성화하고 사이트 성능을 최소 10분간 모니터링해 보세요.
또한, 느리게 로드되는 플러그인은 GTmetrix 보고서 > Waterfall 탭에서 확인할 수 있습니다.
참고: 변경 사항이 즉시 반영되지 않을 수 있습니다. 정확한 결과를 위해 최대 1시간 동안 웹사이트의 동작을 모니터링하는 것을 권장합니다.
웹사이트 최적화: Google PageSpeed Insights와 같은 도구를 사용하여 웹사이트 성능을 최적화하세요.
또한, 다음 플러그인은 웹사이트의 리소스 사용량과 전체 성능을 모니터링하는 데 도움이 됩니다. 이는 웹사이트 내부 병목 현상을 찾는 데 매우 유용합니다:
여전히 리소스 문제가 발생한다면, 라이브 채팅 또는 이메일을 통해 지원팀에 문의해 주세요. 문제를 파악하고 해결할 수 있도록 도와드리겠습니다.