벌처 6달러 플랜으로 워드프레스 최적화하기: 1GB RAM 완전 정복 가이드 (2부)

1부에서 벌처 6달러 플랜으로 3~4개의 워드프레스 사이트를 안정적으로 운영할 수 있다는 것을 확인했습니다. 이제 2부에서는 1GB라는 제한된 메모리를 최대한 효율적으로 활용하는 1GB RAM 완전 정복 가이드로 구체적인 최적화 방법들을 초보자도 쉽게 따라할 수 있도록 단계별로 설명해드리겠습니다.

1GB RAM 완전정복
목차

🎯 최적화 전략 개요

최적화는 다음 순서로 진행하는 것이 가장 효과적입니다.

  1. 시스템 기본 최적화 (30-50MB 절약)
  2. 웹서버 설정 조정 (50-100MB 절약)
  3. 데이터베이스 최적화 (50-80MB 절약)
  4. 워드프레스 최적화 (100-200MB 절약)
  5. 캐싱 시스템 구축 (성능 2-3배 향상)

🛠️ 1단계: 시스템 기본 최적화

불필요한 서비스 제거하기

첫 번째로 시스템에서 워드프레스 운영에 꼭 필요하지 않은 서비스들을 정리해보겠습니다.

SSH 접속 후 실행할 명령어들

# 현재 실행 중인 서비스 확인
systemctl list-units --type=service --state=running

# 불필요한 서비스 비활성화 (Ubuntu 기준)
sudo systemctl disable snapd
sudo systemctl stop snapd

sudo systemctl disable ModemManager
sudo systemctl stop ModemManager

sudo systemctl disable accounts-daemon
sudo systemctl stop accounts-daemon

# 부팅 시 시작하지 않도록 설정
sudo systemctl mask snapd
sudo systemctl mask ModemManager

⚠️ 주의사항:

  • 서비스를 비활성화하기 전에 해당 서비스가 무엇인지 확실히 알고 진행하세요
  • 웹서버나 데이터베이스 관련 서비스는 절대 비활성화하지 마세요

Swap 메모리 설정 (매우 중요!)

1GB 물리 메모리의 한계를 극복하기 위해 Swap 메모리를 설정합니다.

SSH에 다음을 차례대로 적용해 봅니다.

# 현재 Swap 상태 확인
free -h

# 2GB Swap 파일 생성
sudo fallocate -l 2G /swapfile

# 권한 설정 (보안상 중요)
sudo chmod 600 /swapfile

# Swap 파일로 설정
sudo mkswap /swapfile

# Swap 활성화
sudo swapon /swapfile

# 부팅 시 자동 마운트 설정
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# Swappiness 설정 (메모리 우선 사용)
echo 'vm.swappiness=20' | sudo tee -a /etc/sysctl.conf

# Swappiness 설정 확인
cat /proc/sys/vm/swappiness

Swappiness 설정 설명:

  • 값이 낮을수록 물리 메모리를 우선 사용
  • 20: 물리 메모리 80% 사용 후 Swap 사용 (권장)
  • 10: 더 보수적 (물리 메모리 90% 후 Swap 사용)

⚙️ 2단계: 웹서버 최적화 (LiteSpeed 기준)

CyberPanel은 기본적으로 LiteSpeed 웹서버를 사용합니다. 이를 1GB 환경에 맞게 최적화해보겠습니다.

LiteSpeed 설정 조정

CyberPanel에서 설정하는 방법

  1. CyberPanel 관리자 페이지 접속
  2. 왼쪽 사이드바에서 "Tuning" 메뉴 클릭
  3. "LiteSpeed Tuning" 선택

실제 CyberPanel 화면에서는 다음과 같은 설정 항목들이 있습니다:

실제 설정 가능한 항목들과 권장값

Connection Settings

Max Connections: 300
→ 1GB RAM에서 300개 이상 동시 연결은 메모리 부족 위험
→ 300이면 충분한 동시 접속 처리 가능

Max SSL Connections: 150   
→ HTTPS 연결도 메모리를 더 많이 사용하므로 Max Connections의 50% 수준으로 축소

Connection Timeout: 60s 
→ 60초면 일반적인 요청 처리에 충분

Keep-Alive Timeout: 3s 
→ 연결을 빨리 해제하여 메모리 절약
→ 3초면 일반적인 페이지 로딩에 충분

Performance Settings

Cache Size In Memory: 0 MB
→ 물리 메모리가 부족한 상황에서는 LiteSpeed 자체 캐시보다
→ Redis나 워드프레스 캐시 플러그인 활용이 더 효율적

GZIP Compression: Enable (활성화 유지)
→ 파일 압축으로 대역폭 절약 및 전송 속도 향상
→ CPU 사용량은 약간 증가하지만 메모리 절약 효과가 더 큼

설정 적용 방법

  1. TuningLiteSpeed Tuning 메뉴 접속
  2. 위 권장값들로 각 항목 수정
  3. "Apply Settings" 또는 "저장" 버튼 클릭
  4. 설정 적용 후 LiteSpeed 자동 재시작

PHP 설정 최적화

PHP 설정

CyberPanel → PHPEdit PHP Configs

메모리 관련 설정

※ Basic Settings

  • Show PHP errors to visitors OFF
  • Allow fie uploads ON
  • Allow opening URLs as files On
  • Allow including URLs OFF
memory_limit = 256M
max_execution_time = 60
post_max_size = 64M
upload_max_filesize = 64M
max_input_time = 90  

OPcache 설정 (성능에 매우 중요)

※ Advanced Editor

Ctlrl+F 로 opcache 을 검색 하여 주석처리 된것을 아래와 같이 바꾸거나 아래 내용을 복사하여 붙여넣으세요.

opcache.enable=1
opcache.memory_consumption=96
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=2000
opcache.revalidate_freq=60
opcache.validate_timestamps=1
opcache.save_comments=1
opcache.fast_shutdown=1

🗄️ 3단계: 데이터베이스 최적화

🚨 경고: 초보자는 건너뛰세요!

데이터베이스 최적화는 매우 위험합니다. 잘못 설정하면 모든 사이트가 다운될 수 있습니다.

발생 가능한 문제

  • 전체 사이트 접속 불가
  • 데이터 손실 위험
  • 서버 전체 다운

필수 조건

  • ✅ 전체 백업 완료 (사이트 + DB)
  • ✅ MySQL 기본 지식 보유
  • ✅ 복구 방법 숙지

MySQL/MariaDB는 메모리 사용량이 큰 서비스 중 하나입니다. 1GB 환경에 맞게 조정해보겠습니다.

MySQL 설정 최적화

설정 파일 편집

# MySQL 설정 파일 편집
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

1GB RAM 환경 최적화 설정

[mysqld]
# 기존 설정들...

# === 여기부터 추가 ===
# 연결 관련
max_connections = 50
thread_cache_size = 8
table_open_cache = 400

# InnoDB 설정
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
innodb_log_buffer_size = 8M
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 2

# 임시 테이블
tmp_table_size = 32M
max_heap_table_size = 32M

# 버퍼 설정
sort_buffer_size = 1M
join_buffer_size = 1M
read_buffer_size = 512K
read_rnd_buffer_size = 512K

# 성능 모니터링
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

# 메모리 절약
skip-log-bin
performance_schema = OFF

설정 적용

# MariaDB 재시작
sudo systemctl restart mariadb

# 정상 작동 확인
sudo systemctl status mariadb

데이터베이스 정기 최적화

자동 최적화 스크립트 생성

# 최적화 스크립트 생성
sudo nano /root/optimize_db.sh

스크립트 내용:

#!/bin/bash
echo "$(date): 데이터베이스 최적화 시작"

# 비밀번호 직접 입력 방식 (예시)
mysql -u root -p'your_password_here' -e "FLUSH LOGS;"
mysqlcheck -u root -p'your_password_here' --optimize --all-databases

echo "$(date): 데이터베이스 최적화 완료"

사용 시:

  • your_password_here 부분을 실제 비밀번호로 교체

주의:

  • -p'비밀번호' (따옴표 안에, -p와 붙여서)
  • -p '비밀번호' ❌ (공백 있으면 안 됨)
# 실행 권한 부여
chmod +x /root/optimize_db.sh

# 현재 crontab 백업
crontab -l > /tmp/current_cron 2>/dev/null

# 새 작업 추가
echo "0 3 * * 0 /root/optimize_db.sh >> /var/log/db_optimize.log 2>&1" >> /tmp/current_cron

# 적용
crontab /tmp/current_cron

# 정리
rm /tmp/current_cron

# 확인
crontab -l

📝 4단계: 워드프레스 최적화

테마 선택과 최적화

경량 테마 추천

  • Astra: 가볍고 빠른 다목적 테마
  • GeneratePress: 최소한의 코드로 구성
  • Twenty Twenty-Three: 워드프레스 기본 테마
  • OceanWP: 기능이 많지만 비교적 가벼움

테마 최적화 팁

워드프레스 관리자 : 모양 → 테마 파일 편집기

※ functions.php에 추가할 최적화 코드



// jQuery 마이그레이션 제거
function remove_jquery_migrate() {
    if (!is_admin() && !empty($GLOBALS['wp_scripts']->registered['jquery'])) {
        $script = $GLOBALS['wp_scripts']->registered['jquery'];
        if ($script->deps) {
            $script->deps = array_diff($script->deps, array('jquery-migrate'));
        }
    }
}
add_action('wp_default_scripts', 'remove_jquery_migrate');

// 이모지 스크립트 제거
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('wp_print_styles', 'print_emoji_styles');

// 불필요한 워드프레스 기능 제거
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'index_rel_link');
remove_action('wp_head', 'wlwmanifest_link');

플러그인 선별과 관리

필수 플러그인 (사이트당 최대 10개 권장)

보안 (1개만 선택):

  • Wordfence Security: 강력하지만 메모리 사용량 높음⭐
  • iThemes Security: 가볍고 효율적
  • All In One WP Security: 무료이면서 가벼움

캐싱 (1개만 선택):

  • LiteSpeed Cache: 무료이면서 가장 강력⭐
  • WP Rocket: 유료이지만 가장 효과적
  • W3 Total Cache: 무료이면서 강력
  • WP Super Cache: 가장 가벼움

SEO (1개만 선택):

  • Yoast SEO: 기능이 많음
  • RankMath: 무료이면서 강력
  • SEOPress: 가볍고 빠름

이미지 최적화:

LiteSpeed Cache 내장 기능 사용 (권장)
→ WebP 변환, 압축, 지연 로딩 모두 포함
→ 별도 플러그인 불필요

만약 LiteSpeed Cache 미사용 시에만

  • Smush: 무료 버전도 충분
  • ShortPixel: 품질 좋은 압축

이미지 최적화 전략

업로드 전 최적화

  • 해상도: 최대 1920px 폭으로 제한
  • 포맷: JPEG 85% 품질, WebP 지원 시 사용
  • 파일 크기: 이미지당 100KB 이하 목표

자동 최적화 설정

functions.php에 추가


// JPEG 품질 조정
add_filter('jpeg_quality', function($quality) {
    return 85;
});

// 큰 이미지 자동 리사이징
add_filter('big_image_size_threshold', function() {
    return 1920;
});

// WebP 지원 활성화
function add_webp_upload_support($mime_types) {
    $mime_types['webp'] = 'image/webp';
    return $mime_types;
}
add_filter('upload_mimes', 'add_webp_upload_support');

🚀 5단계: 캐싱 시스템 구축

캐싱은 메모리 효율성을 높이는 가장 중요한 요소입니다.

Redis 캐싱 설치 및 설정

Redis 설치

Redis 최적화 설정

CyberPanel → Manage Services → Applications

Manage Applications 에서 Redis 를 install (설치) 합니다.

워드프레스 Redis 연동

LiteSpeed Cache 플러그인에서

캐시 → 객체

  • 메서드를 Redis 로 설정
    • 호스트 locallhost
    • 포트 6379

LiteSpeed Cache 를 사용하지 않는다면, Redis 플러그인을 설치하여 사용하시면 됩니다.

📊 6단계: 성능 모니터링과 유지보수

메모리 사용량 실시간 모니터링

CyberPanel에서 확인

  1. CyberPanel 관리자 페이지 접속
  2. Server StatusTop Processes 메뉴 클릭
  3. Used Memory 수치 확인
  • 700MB 이하: 안전 ✅
  • 700-850MB: 주의 필요 ⚠️
  • 850MB 이상: 즉시 최적화 필요 🚨

추가 확인사항:

  • Free Memory가 150MB 이하면 위험 신호
  • Top Processes에서 메모리 많이 사용하는 프로세스 확인

SSH 터미널에서 직접 확인하는 방법

free -h 명령어 (가장 기본적이고 유용)
free -h

출력 결과 예시:

                     total        used        free      shared  buff/cache   available
Mem:          1.0Gi       650Mi        50Mi        15Mi       300Mi       200Mi
Swap:         2.0Gi       100Mi       1.9Gi

결과 해석 방법:

  • total: 전체 메모리 용량 (1.0GB)
  • used: 현재 사용 중인 메모리 (650MB)
  • free: 완전히 비어있는 메모리 (50MB)
  • available: 실제로 사용 가능한 메모리 (200MB)
  • buff/cache: 시스템이 성능을 위해 임시로 사용하는 메모리

🚨 주의사항:

  • used가 850MB 이상이면 메모리 부족 위험
  • available이 100MB 이하면 즉시 최적화 필요
htop 명령어 (시각적으로 보기 좋음)
# htop 설치 (한 번만 실행)
apt install htop

# 실행
htop

htop의 장점:

  • 실시간으로 메모리 사용량 변화 확인
  • 어떤 프로그램이 메모리를 많이 사용하는지 한눈에 파악
  • 컬러로 표시되어 직관적

사용법:

  • 상단 바에서 Mem 항목 확인
  • 녹색: 사용 중인 메모리
  • 노란색: 버퍼/캐시
  • 빨간색: 위험 수준

자동 정리 스크립트

시스템 정리 스크립트 생성 (예시)

ssh에서 다음과 같은 스크립트를 적용하면 시스템을 주기적으로 자동 정리 합니다.

sudo nano /root/system_cleanup.sh

스크립트 내용:

#!/bin/bash
echo "$(date): 시스템 정리 시작"

# 임시 파일 정리
find /tmp -type f -atime +3 -delete
find /var/tmp -type f -atime +3 -delete

# 로그 파일 정리
find /var/log -name "*.log" -type f -size +50M -delete

# 패키지 캐시 정리
apt-get clean

# 메모리 캐시 정리
sync && echo 3 > /proc/sys/vm/drop_caches

echo "$(date): 시스템 정리 완료"

자동 실행 설정

# 매일 새벽 3시 실행
echo "0 3 * * * /root/system_cleanup.sh >> /var/log/cleanup.log 2>&1" | crontab -

⚠️ 7단계: 비상 상황 대응

메모리 부족 시 즉시 대응법

긴급 메모리 확보

ssh에서 다음 명령어들을 적용해 봅니다.

# 즉시 캐시 정리
sync && echo 3 > /proc/sys/vm/drop_caches

# 웹서버 재시작 (연결 초기화)
systemctl restart lsws

# MySQL 재시작 (메모리 정리)
systemctl restart mysql

업그레이드 고려 신호

※ 다음 상황이 주 3회 이상 발생하면 상위 플랜으로 업그레이드를 고려하세요

기술적 신호:

  • Used Memory가 850MB 이상 지속
  • 페이지 로딩 시간 5초 이상
  • 502/503 에러 발생
  • Redis나 MySQL 재시작 필요

비즈니스 신호:

  • 방문자 불만 증가
  • 구매 전환율 감소 (쇼핑몰의 경우)
  • 검색 순위 하락
  • 경쟁사 대비 사이트 속도 느림

🚀 마무리: 지속가능한 최적화

벌처 6달러 플랜의 1GB RAM이라는 제약은 분명 도전적이지만, 체계적인 최적화를 통해 3~4개의 안정적인 워드프레스 사이트를 충분히 운영할 수 있습니다.

1GB RAM 완전 정복 핵심 성공 요소

  1. 단계적 적용: 한 번에 모든 것을 변경하지 말고 단계별로 적용
  2. 지속적 모니터링: 정기적인 성능 점검과 조정
  3. 우선순위 설정: 메인 사이트 우선, 서브도메인은 경량화
  4. 예방적 관리: 문제 발생 전 미리 대응

장기적 관점

초기에는 불편할 수 있지만, 이런 제약된 환경에서의 최적화 경험은 향후 더 큰 서버를 운영할 때도 큰 도움이 됩니다. 효율적인 리소스 관리 습관을 기르는 좋은 기회로 생각하시기 바랍니다.

트래픽이 증가하거나 더 많은 기능이 필요할 때는 주저 없이 상위 플랜으로 업그레이드하시되, 지금 배운 최적화 원칙들은 계속 적용하시면 어떤 환경에서도 최고의 성능을 낼 수 있을 것입니다.

다음 단계: 실제로 이 가이드를 적용해보시고, 본인의 사이트 특성에 맞는 미세 조정을 통해 최적의 설정을 찾아가시기 바랍니다. 작은 서버로도 큰 꿈을 실현할 수 있을 것입니다.

📖 댓글 남기기

목차
목차