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

🎯 최적화 전략 개요
최적화는 다음 순서로 진행하는 것이 가장 효과적입니다.
- 시스템 기본 최적화 (30-50MB 절약)
- 웹서버 설정 조정 (50-100MB 절약)
- 데이터베이스 최적화 (50-80MB 절약)
- 워드프레스 최적화 (100-200MB 절약)
- 캐싱 시스템 구축 (성능 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/swappinessSwappiness 설정 설명:
- 값이 낮을수록 물리 메모리를 우선 사용
- 20: 물리 메모리 80% 사용 후 Swap 사용 (권장)
- 10: 더 보수적 (물리 메모리 90% 후 Swap 사용)
⚙️ 2단계: 웹서버 최적화 (LiteSpeed 기준)
CyberPanel은 기본적으로 LiteSpeed 웹서버를 사용합니다. 이를 1GB 환경에 맞게 최적화해보겠습니다.
LiteSpeed 설정 조정
CyberPanel에서 설정하는 방법
- CyberPanel 관리자 페이지 접속
- 왼쪽 사이드바에서 "Tuning" 메뉴 클릭
- "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 사용량은 약간 증가하지만 메모리 절약 효과가 더 큼설정 적용 방법
- Tuning → LiteSpeed Tuning 메뉴 접속
- 위 권장값들로 각 항목 수정
- "Apply Settings" 또는 "저장" 버튼 클릭
- 설정 적용 후 LiteSpeed 자동 재시작
PHP 설정 최적화
PHP 설정
CyberPanel → PHP → Edit 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.cnf1GB 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에서 확인
- CyberPanel 관리자 페이지 접속
- Server Status → Top Processes 메뉴 클릭
- 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
# 실행
htophtop의 장점:
- 실시간으로 메모리 사용량 변화 확인
- 어떤 프로그램이 메모리를 많이 사용하는지 한눈에 파악
- 컬러로 표시되어 직관적
사용법:
- 상단 바에서 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 완전 정복 핵심 성공 요소
- 단계적 적용: 한 번에 모든 것을 변경하지 말고 단계별로 적용
- 지속적 모니터링: 정기적인 성능 점검과 조정
- 우선순위 설정: 메인 사이트 우선, 서브도메인은 경량화
- 예방적 관리: 문제 발생 전 미리 대응
장기적 관점
초기에는 불편할 수 있지만, 이런 제약된 환경에서의 최적화 경험은 향후 더 큰 서버를 운영할 때도 큰 도움이 됩니다. 효율적인 리소스 관리 습관을 기르는 좋은 기회로 생각하시기 바랍니다.
트래픽이 증가하거나 더 많은 기능이 필요할 때는 주저 없이 상위 플랜으로 업그레이드하시되, 지금 배운 최적화 원칙들은 계속 적용하시면 어떤 환경에서도 최고의 성능을 낼 수 있을 것입니다.
다음 단계: 실제로 이 가이드를 적용해보시고, 본인의 사이트 특성에 맞는 미세 조정을 통해 최적의 설정을 찾아가시기 바랍니다. 작은 서버로도 큰 꿈을 실현할 수 있을 것입니다.



