メシのタネ

メシのタネになる、Laravelや設計思想の技術配信サイト


WordPress × AWS ― 2025年版 “ちゃんと効く” 負荷対策

,

  1. Webサーバー
  2. WordPress × AWS ― 2025年版 “ちゃんと効く” 負荷対策

「ふだんは 1 日 500 PV の平穏なブログ。それでも――突然のバズ砲で 5 万 PV が雪崩れ込む“あの瞬間”に耐えられるのか?」

WordBench 名古屋で聞いた AWS × WordPress 事例をきっかけに、“今ならどう組むか” を真面目に洗い直してみました。
ロードバランサと DNS ラウンドロビンを礼賛していた旧稿から 7 年。エッジキャッシュ、オートスケール、サーバレス DB……クラウドの武器庫は一変しています。

本記事では 「コストは最小、でもバズには落ちない」 を合言葉に、

  1. 負荷を測るモダン指標
  2. 2025 年流・三段ロケット構成(CloudFront → ALB → Aurora)
  3. 月 7,000 円スタートで 5 万 PV に耐えるスケールパス

を具体例と数字付きで共有。
“明日バズっても CloudWatch が静かに光るだけ”――そんな安心感ごとデプロイしたい人のための現場メモです。

たねまる

ちなみに、このブログは Xserver の上で動いてるんだよ〜。エックスアクセラレータっていう
キャッシュで頑張ってるんだ〜。

そもそも“負荷”とは何を指すのか

観点具体指標目安 (バズ時)
トラフィックRequests /sec, 同時接続数300 RPS / 3,000 conns
レスポンスp95 応答時間< 300 ms
リソースCPU %, Mem %, DB 接続数, IOPS70 % を超えたら要拡張
UXLCP / TTFBモバイルで < 2.5 s

測定ツール例:AWS CloudWatch, WP Query Monitor, K6, Locust

古すぎる対策を卒業するチェックリスト

もう卒業いま必須
DNS ラウンドロビンRoute 53 + ヘルスチェック + フェイルオーバー
物理ロードバランサALB / NLB(マネージド・L7/L4)
手動スケールアウトAuto Scaling Group(CPU or RPS トリガ)
サーバー側キャッシュだけCloudFront + キャッシュポリシー
単一 RDSAmazon Aurora (writer + reader)

現代 WordPress on AWS ― 三段ロケット構成

上図のマーメイドコードは下記

flowchart LR
  CF[CloudFront<br/>+ WAF] --> ALB
  ALB --> WP1(ECS / EC2<br/>PHP-FPM)
  ALB --> WP2(ECS / EC2)
  subgraph Cache Layer
    REDIS[ElastiCache Redis<br/>オブジェクトキャッシュ]
  end
  WP1 <--> REDIS
  WP2 <--> REDIS
  subgraph Data
    AURORA[(Aurora MySQL<br/>Writer / Reader)]
  end
  WP1 <--> AURORA
  WP2 <--> AURORA
  S3[(S3 + CloudFront<br/>Media offload)] <---> WP1

図の要点

階層役割最低限の設定
EdgeCloudFrontcache-policy: CacheAllExceptCookieSession• Lambda@Edge で UA 分岐可
WAFOWASP + Geo ブロックルール 10 本以内なら無料枠
ALBSSL 終端 & Sticky 無しヘルスチェックを /wp-health.php
AppEC2 or ECS• PHP-FPM pm=ondemand• WP-Cron → EventBridge へ
CacheRediswp-config.phpWP_REDIS_MAXTTL=600
DBAurora MySQLread/write split プラグインで自動振分
MediaS3 + CloudFrontWP Offload Media Lite で自動同期

小さく初めて大炎上に耐えうる構成を考えるなら?

Stage 0EC2 t4g.small × 1

  • Lightsail でも可。CloudFront だけは付ける。

Stage 1ALB + EC2 AutoScaling (min 1 / max 3)

  • AMI に WordPress baked。Scale-out 5 min。

Stage 2Aurora Serverless v2 + ElastiCache

  • DB とオブジェクトキャッシュを外だし。TTL を短く。

Stage 3ECS Fargate / EKS + Blue/Green

  • Zero-downtime デプロイ、1 万 RPS まで検証済。

コスト感 (東京リージョン)
Stage 1 で平常 ≈ ¥7,000/月。
Stage 2 でも平常 ≈ ¥18,000/月。
“5 万 PV/日” バズ当日でも < ¥3,000 追加程度。

テストせずに語るな:負荷テスト最小セット

k6 run -e USERS=200 -e DURATION=60s wordpress_smoke.js
  • k6 スクリプトでホーム・記事詳細・検索を Weighted で回す
  • p95 < 300 ms & エラー率 < 0.1 % を合格ライン
  • Pipeline に組み込み、PR 時・本番前・月イチ定期で実行1 % を合格ライン

まとめ ― “用意するのは武器より撤退経路”

  • ロードバランサ/ラウンドロビン単体では 2025 年の最低ラインに届かない
  • キャッシュ ⇒ オートスケール ⇒ 分散 DB の三段ロケットが王道
  • “PV 500 → 5 万” の瞬間費用は 数千円、機会損失で逃す広告収益より圧倒的に安い
たねまる

これで明日バズっても安心だね〜。でも、お財布とは相談しようね〜。

FAQ

K6 って何?

OSS の負荷テストツール。JavaScript でシナリオを書き、CLI 一発で数万リクエストを同時発射できる。

Route 53 + ヘルスチェックを入れる理由は?

DNS ラウンドロビン単体では障害ノードに流れ続けるため。

ALB があるのに CloudFront を重ねる意味ある?

CloudFront は「キャッシュ+グローバル PoP」。静的アセットをエッジで止め、ALB には PHP 処理だけを届ける構成にすることで、RPS/帯域とも 90 % 以上カットできることが多い。

Auto Scaling の閾値は何をトリガーにする?

シンプルに ALB RequestCount ≥ 100 /minEC2 CPU ≥ 60 % を基準にして試算 → バースト時に 1 分以内で +1 台。

Aurora Serverless v2 と RDS MySQL、何が違う?

ピークが読めないブログ → Aurora Sls v2:30 秒で 0.5 ACU → 数百 ACU まで無段階拡張。

一定トラフィック&レプリカ多数 → RDS MySQL:リーダー台数が決まっている方がコスト最

Redis(オブジェクトキャッシュ)は必須?

ぶっちゃけPV 500/日なら不要。5万/日なら要件等。

WordPress Cron を EventBridge に外出しするメリットは?

通常 WP-Cron はユーザーアクセス時に走る=バースト時に同時多発して CPU を食う。
EventBridge へ移せば「1 分毎に 1 回だけ」実行でき、ピーク時も安定。

Lightsail と EC2、最初の 1 台はどちらが良い?

初学者/固定費を抑えたい → Lightsail:月額固定。

将来 Auto Scaling 前提 → EC2:AMI 化しやすく、後から ASG へスムーズに移行できる。

このBlogの構成は当然・・・

22万社以上が導入!法人向けレンタルサーバー『XServerビジネス』 👈️ 注: アフィリンクです。

あとこの記事はAWSの構成の話をしていたので、Xserverにしたら本記事の構成と全く異なりますのでご注意ください。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.