IT 리뷰/블로그 SEO

블루호스트 VPS 워드프레스 TTFB 줄이기(OPcache + Redis Object Cache 설치)

잡가이버 2026. 5. 25. 05:19
반응형

블루호스트(Bluehost) VPS 워드프레스 TTFB 지연 해결 후기 OPcache + Redis Object Cache 최적화

블루호스트(Bluehost) VPS에서 워드프레스 사이트를 운영하면서 가장 스트레스였던 게 TTFB(Time to First Byte)였습니다. 테마는 GeneratePress, 캐시는 WP-Rocket까지 쓰고 있었는데도, 구글 서치 콘솔에서 색인이 밀리고, 속도 지표는 계속 빨간색이더라고요.

VPS에서 사이트 3개를 같이 굴리는 상황이라 “메인 사이트만 유독 느리다”가 더 거슬렸습니다. 그래서 결국 원인은 DB 쿼리와 오브젝트 처리량이었고, 첫 응답을 보내는 데 시간이 잡아먹고 있다는것을 알아서 이번에 플러그인 더 얹기 전에 서버 쪽에서 먼저 손봤습니다.

TTFB가 늘어질 때 VPS에서 자주 터지는 지점

  • 워드프레스 DB 쿼리가 많거나, 동일 쿼리가 반복되는 구조
  • PHP 처리 오버헤드 (요청마다 컴파일/해석 부담)
  • Object Cache 미사용으로 매번 DB에서 다시 긁어오는 패턴
  • VPS 리소스 공유로 피크 타임에 응답이 밀리는 상황

서버 레벨에서 먼저 잡은 것: OPcache + Redis

제가 선택한 조합은 간단합니다. “PHP는 덜 일하게”, “DB는 덜 두드리게”.

  • OPcache : PHP 스크립트를 매번 새로 해석하지 않고 메모리에 올려서 재사용
  • Redis Object Cache : 워드프레스 오브젝트 캐시를 메모리에 보관해 DB 호출을 줄임

OPcache 켜기 (cPanel EasyApache 4)

블루호스트 cPanel EasyApache 4에서 OPcache 확장 모듈을 설치하는 화면

블루호스트 cPanel에서 EasyApache 4 → Customization → PHP Extensions로 들어가 OPcache를 검색해서 Provision만 해주면 끝입니다. 이것만으로도 PHP 쪽 부담이 꽤 줄어서, 체감이 먼저 오더라고요.

EasyApache 4 PHP Extensions 목록에서 Redis 관련 항목을 찾는 화면

그리고 바로 Redis도 같은 화면에서 처리하려고 했는데… 여긴 Redis가 안 보였습니다. 알고 보니 블루호스트 환경에서는 Redis를 cPanel에서 깔끔하게 끝내기 어려운 케이스가 있어 SSH로 작업하는 쪽이 빠르더라고요.

Apache 모듈 목록에서 Redis처럼 보이는 항목이 있지만 워드프레스 오브젝트 캐시용 PHP 확장이 아닌 예시

참고로 Apache 모듈 쪽에 Redis처럼 보이는 게 있긴 한데, 워드프레스에서 쓰는 PHP Redis 확장이랑은 결이 달라서 여기로 해결이 안 됐습니다.

SSH로 Redis 설치

SSH 접속

블루호스트 VPS에서 SSH 터미널로 접속하는 화면

서버 안쪽을 만져야 해서 SSH 터미널을 열었습니다. 비밀번호 입력할 때 화면에 글자가 안 보이는 건 정상이라, 그냥 타이핑하고 엔터 치면 됩니다. 저도 처음엔 “안 써지는데?” 하다가 멈칫했네요.

Redis 서버 설치

로그인 후 Redis 본체를 먼저 설치하고, 부팅 시 자동 실행되게 해줬습니다.

SSH 터미널에서 dnf로 Redis를 설치하고 systemctl로 활성화하는 화면

# Redis 설치
dnf install redis -y

# 서버 재부팅 시에도 자동 실행되도록 설정
systemctl enable --now redis

블루호스트 환경 PHP Redis 확장(ea-phpXX-php-redis)

블루호스트에서 ea-php82-php-redis 패키지를 설치하는 과정 예시

여기서 가장 시간을 썼습니다. 일반적인 php-redis 설치 방식으로 가면 환경에 따라 경로/버전이 꼬이면서 에러가 나기도 하더라고요. 블루호스트 쪽은 ea-php82-처럼 EA 계열 패키지명을 맞춰주는 게 관건이었습니다.

# 블루호스트 PHP 8.2 버전에 맞는 Redis 확장 도구 설치
dnf install ea-php82-php-redis -y

# 설치 확인 및 설정을 위해 서버(아파치) 재시작
systemctl restart httpd

저는 여기서 httpd 재시작이 바로 안 먹히는 상황이 한 번 나왔습니다.

httpd 재시작 실패 또는 서비스 오류 메시지가 발생한 상황 예시

그 직후 워드프레스 접속이 흔들리면서 데이터베이스 연결 중 오류가 뜨고, wp-config.php 쪽이 바뀌었다는 식의 메시지가 나와서 순간 식은땀 났습니다. 결론은 서버 재부팅 후 정상으로 돌아왔고, 이후 Redis 연동은 문제없이 진행됐습니다. (환경에 따라 재시작/재부팅 타이밍에서 이런 식으로 잠깐 흔들릴 수 있더라고요.)

워드프레스에서 Redis Object Cache 연결

서버에 Redis + PHP 확장까지 올라가면, 워드프레스 쪽은 마무리가 단순합니다.

워드프레스 Redis Object Cache 플러그인에서 Status Connected를 확인하는 화면

  1. 플러그인 설치 : Redis Object Cache (by Till Krüss) 설치 후 활성화
  2. 연결 활성화 : [설정] → [Redis]에서 [Enable Object Cache] 클릭
  3. 확인 : Status: Connected가 뜨면 서버 Redis와 워드프레스가 붙은 상태

여기까지는 “오케이 끝”이라고 생각했는데, 저는 설치 직후 체감이 기대만큼 바로 오지 않았습니다. 평소에도 TTFB가 788ms 정도로 이미 부담이 있었는데, 설치 후 잠깐 더 올라가면서 버벅임이 심해지기도 했습니다. 보통은 1~2초 급 응답이 200~400ms대로 내려간다는 얘기가 많아서 저도 그 그림을 기대했는데, 제 환경에선 조금 더 시간을 두고 보면서 조정이 필요하겠더라고요.

설치 후 체감이 바로 안 나왔을 때, 제가 다시 손본 것

캐시가 “겹친 상태”인지 먼저 확인

WP-Rocket, 서버 캐시, Redis Object Cache까지 한 번에 올라가면 “빠르겠지” 싶은데, 오히려 캐시 무효화 타이밍이 꼬이거나, 관리자/로그인 사용자 캐시가 비정상으로 돌아서 답답해지는 경우가 있었습니다. 그래서 저는 Redis를 올린 뒤 아래를 먼저 정리했습니다.

  • WP-Rocket 캐시 전체 삭제 + 프리로드 재실행
  • Redis 플러그인에서 Flush Cache 한 번 수행
  • 오브젝트 캐시만 켜고 다른 최적화(미니파이/딜레이 JS 등)는 잠깐 보류해서 원인 분리

DB 쿼리 자체가 너무 많으면 Redis만으로는 한계가 있습니다

Redis가 만능은 아니더라고요. 특정 플러그인이 쿼리를 폭발시키는 구조거나, 검색/필터/통계형 플러그인이 많은 사이트면 캐시가 있더라도 부담이 남습니다. 이때는 “서버 스펙을 올릴지”, “무거운 플러그인을 바꿀지” 결정을 해야 했습니다.

VPS에서 사이트 3개 운영이면 리소스 피크도 체크

메인만 느린 줄 알았는데, 실제로는 다른 사이트 크론 작업이나 백업, 이미지 최적화 작업이 같이 돌면서 CPU/메모리를 치는 순간이 있었습니다. 그 타이밍에 메인 사이트 첫 응답이 밀리면 TTFB는 바로 튑니다.

Q. Redis 설치했는데 워드프레스에서 Connected가 안 떠요.

대부분은 PHP Redis 확장이 빠졌거나, PHP 버전과 패키지명이 안 맞을 때였습니다. 블루호스트 환경에선 ea-php82-php-redis처럼 EA 계열 패키지를 맞춰야 연결이 깔끔하게 붙는 편이었어요.

Q. 설치 후 오히려 느려진 느낌인데요?

캐시가 새로 쌓이는 구간에서 잠깐 둔해질 수 있고, WP-Rocket/서버 캐시/오브젝트 캐시가 겹치면 더 답답하게 느껴질 때도 있었습니다. 저는 캐시를 한 번 싹 비우고(플러그인 캐시 + Redis Flush), 프리로드를 다시 돌린 뒤에 안정적으로 봤습니다.

Q. OPcache만 켜도 TTFB가 내려가나요?

내려가는 경우가 많았습니다. 특히 PHP 실행 부담이 큰 테마/플러그인 조합이면 OPcache만으로도 “첫 반응이 둔한 느낌”이 줄어들 수 있어요. 다만 DB 쿼리가 핵심 원인이라면 Redis 같은 오브젝트 캐시가 더 체감되는 편이었습니다.

Q. httpd 재시작하다가 DB 연결 오류가 뜨면 큰일 난 건가요?

저도 그 상황이 한 번 나왔는데, 서비스 재시작/재부팅 과정에서 잠깐 연결이 흔들리면서 그렇게 보일 수 있었습니다. 재부팅 후 정상으로 돌아왔고, wp-config.php가 실제로 바뀌었는지만 확인하면 대부분 정리됩니다.

Q. 워드프레스 사이트 여러 개 운영 중인데 Redis는 공용으로 써도 되나요?

가능합니다. 다만 사이트별로 오브젝트 캐시 키가 섞이지 않도록 플러그인 설정/프리픽스가 맞게 잡히는지 확인하는 게 좋습니다. 운영 사이트가 늘어날수록 VPS 메모리도 같이 체크하는 편이 안전합니다.

반응형
그리드형