오라클 무료 서버, 놀면 뺏긴다! – CPU 부하 유지 꿀팁

안녕하세요, Mark입니다.

오늘은 서버 구축기 시리즈에서 조금 특별한 주제를 다룹니다. 새로운 프로그램 설치가 아니라, 이미 있는 서버를 지키는 이야기입니다.


🚨 어렵게 얻은 무료 서버, 뺏길 수도 있다고?

기억하시나요? 1편에서 오라클 무료 서버를 얻기 위해 5일 동안 새로고침을 반복했던 그 클릭전쟁을요.

그렇게 힘들게 손에 넣은 서버인데, 잘 안 쓰면 오라클이 다시 가져갈 수 있다는 이야기를 들었습니다. 제미나이한테 서버 관리 이것저것 물어보다가 나온 이야기였는데, 처음엔 솔직히 “설마?” 싶었어요. 그냥 켜만 놓으면 되는 거 아닌가? 했거든요.

그런데 알고 보니 진짜였습니다. 오라클 공식 문서에 버젓이 명시된 정책이더라고요.


📋 오라클 공식 정책 – 얼마나 놀면 위험한가요?

오라클 클라우드 공식 문서(Always Free Resources)에는 이런 내용이 나옵니다.

“유휴 Always Free 컴퓨팅 인스턴스는 Oracle에 의해 회수될 수 있습니다.”

그리고 “유휴(Idle)”로 판단하는 기준이 구체적으로 명시되어 있어요.

7일 동안 아래 조건을 모두 충족하면 유휴 서버로 판정됩니다:

항목기준
CPU 사용률 (95th percentile)20% 미만
네트워크 사용률20% 미만
메모리 사용률 (A1 shape만 해당)20% 미만

제 서버(ARM Ampere A1, 4코어 24GB)는 A1 shape 타입이라 세 가지 조건이 모두 적용됩니다.

💡 포인트: 세 가지가 동시에 모두 미달일 때만 회수 대상이 됩니다. 하나라도 넘으면 괜찮아요.

실제로 2022~2023년에 오라클이 유휴 서버 회수를 진행하면서 “일주일 뒤 서버를 멈춘다”는 경고 이메일을 보낸 사례가 커뮤니티에 여럿 보고됐습니다. 5일 클릭전쟁의 피땀을 생각하면 그 이메일 한 통으로 서버를 잃고 싶진 않잖아요. 😅


🖥️ 내 서버 현재 상태는?

그럼 제 서버는 어떤지 확인해봤습니다.

오라클 콘솔 → 인스턴스 세부정보 → 모니터링 탭에서 CPU와 메모리 사용률 그래프를 볼 수 있어요.

(상단 메인 이미지 참조)

  • 메모리: 약 47% ✅ → 안전
  • CPU: 약 30% ✅ → 안전 (지금은요)

메모리는 Ghost, 워드프레스, n8n, 업타임쿠마 등 이것저것 설치하다 보니 자연스럽게 올라갔어요. 사실 초반엔 메모리도 걱정돼서 Ollama(로컬 LLM)를 설치해서 돌려본 적이 있습니다.

결과는… GPU가 없는 서버에서 AI한테 말 한마디 하면 수만 년의 세월이 흐르는 체감이었습니다. 😂 다행히 이것저것 서비스를 올리다 보니 메모리는 자연스럽게 해결됐어요.

문제는 CPU였습니다. 서비스들이 평소엔 얌전히 대기 중이라, 트래픽이 없으면 CPU가 정말 아무것도 안 합니다. 구글봇 1명이 방문객 전부인 현 상황에서는… ㅎㅎ


💡 해결책: CPU에 알바를 시키자

제미나이한테 “CPU 사용률을 일정 수준으로 유지하는 방법”을 물어봤더니 stress-ng라는 도구를 추천해줬어요.

아이디어는 간단합니다.

서버를 공장이라고 생각해 보세요. 4개의 생산 라인(코어)이 있는데, 주문이 없을 때 라인을 다 세워두면 “이 공장 놀고 있네?”라는 판정을 받을 수 있어요. 그러니 라인 하나만 가동해서 “우리 일하고 있어요” 신호를 계속 보내는 겁니다.

4코어 중 코어 1개에만 100% 부하를 걸면:

항목내용
전체 CPU 점유율1/4 = 약 25% (기준 20% 초과 ✅)
나머지 3코어실제 서비스용으로 온전히 사용 가능
나중에 서버 바빠지면컨테이너만 내리면 끝

계산도 단순하고, 부작용도 적고, 해제도 간단하죠.


📦 stress-ng 컨테이너 설치하기

포테이너 스택으로 간단히 올릴 수 있습니다. 포테이너 → Stacks → Add Stack에서 아래 내용을 붙여넣으세요.

version: '3'
services:
  keepalive:
    image: alexeiled/stress-ng:latest
    container_name: keepalive-cpu
    restart: always
    # CPU 1개를 100% 사용 (4코어 기준 전체 25% 점유)
    command: --cpu 1 --cpu-load 100
version: '3'
services:
  keepalive:
    image: alexeiled/stress-ng:latest
    container_name: keepalive-cpu
    restart: always
    # CPU 1개를 100% 사용 (4코어 기준 전체 25% 점유)
    command: --cpu 1 --cpu-load 100

터미널을 쓰신다면:

docker compose up -d
docker compose up -d

restart: always 덕분에 서버가 재시작돼도 자동으로 켜집니다. 한번 올려두면 신경 쓸 일이 없어요.


🗺️ 실제로 작동하는지 확인하기

오라클 콘솔 → 인스턴스 세부정보 → 모니터링 탭에서 CPU 그래프를 확인하면 됩니다.

stress-ng 컨테이너를 올리고 나면 CPU 그래프가 안정적으로 일정 수준을 유지하는 걸 볼 수 있어요. 저는 현재 약 30% 선에서 꾸준히 유지 중입니다. 20% 기준을 여유 있게 넘기고 있으니 일단 마음이 편하네요. 😄


🔧 나중에 서버가 바빠지면?

실제 트래픽이 늘거나 무거운 서비스를 올려서 CPU가 자연스럽게 20%를 넘기게 되면, 컨테이너 하나만 내리면 됩니다.

docker compose down
docker compose down

처음부터 1코어만 건드려 놨으니 해제도 깔끔해요. 지금은 필요하지만, 언젠가는 필요 없어질 컨테이너입니다. ㅎㅎ


✅ 핵심 요약

항목내용
오라클 유휴 판정 기준CPU/네트워크/메모리 모두 20% 미만이 7일 지속
해결 도구stress-ng 도커 컨테이너
설정 방법4코어 중 1코어 100% → 전체 약 25% 점유
장점나머지 3코어는 실제 서비스용으로 온전히 유지
해제 방법docker compose down 한 줄로 간단히 제거

마치며

“설마 오라클이 내 서버를 뺏어가겠어?” 싶었는데, 공식 문서에 버젓이 명시된 정책이더라고요. 5일 클릭전쟁의 피땀을 생각하면 그냥 넘길 수 없었습니다.

컨테이너 하나로 CPU에 적당한 알바를 시켜두고 나니, 오라클 모니터링 그래프도 예쁘고 마음도 편해졌어요. 무료 서버를 쓰고 계신 분들이라면 모니터링 탭에서 사용률 한번 꼭 체크해 보세요!

Mark의 한마디: “CPU야, 넌 쉬면 안 돼. 일해야 집에 있을 수 있어.” — Mark, 4코어 서버의 집주인

댓글 남기기