企業サイトはもちろん、小規模なWooCommerceストアであっても、広告の掲載やメールの送信、期間限定のプロモーションなどにより、トラフィックが突然膨れ上がることがあります。
米国のNPRによると、2024年のブラックフライデー1日のオンライン売上は108億ドル(約1兆6,700億円)に到達し、小さなストアにも波及効果があったと言われています。普段は数百人しか訪れないようなキャンペーンが、突然数千ものユーザーが決済を行うこともあり得るということです。
Kinstaでは、そのような突発的なアクセス集中が発生するたびに、サーバープランをアップグレードする必要はありません。この記事では、一時的なアクセス集中にKinstaで賢く対応する方法3選(PHPパフォーマンスアドオン、キャッシュのフル活用、データベースの負担軽減)をご紹介します。
1. PHPパフォーマンスアドオンを使用する
アクセス集中によってサイトが圧倒される理由は、PHPのリクエスト処理能力の限界にあります。キャッシュされていないページビューや決済アクションが同時に多発すると、スレッドが積み重なり、エラー発生や速度低下、カゴ落ちなどにつがなります。

そのような状況で役立つのが、PHPパフォーマンスアドオンです。プラン全体をアップグレードする代わりに、ピーク時に一時的にPHPスレッドとメモリ割り当てを増やすことができます。料金は日割りで計算されるため、必要時に必要な分にだけ支払い可能です。

たとえば小規模なWooCommerceストアで48時間のフラッシュセールを開催するとします。効果的なメールキャンペーンが成功すれば、一夜にしてトラフィックが3倍に急増することも十分考えられます。ほとんどの商品ページはキャッシュで提供されますが、決済ページはキャッシュすることができず、リクエストが一気に増加します。
十分なPHPスレッドがなければ、買い物カゴの決済処理は停滞し、注文は失敗します。ページの読み込みが遅いと、買い物客の3人に1人がカゴ落ちするという調査結果もあり、これは数十万円規模の売上損失につながります。セールの前日にPHPパフォーマンスアドオンを利用することで、アクセス増加時にも決済の流れをスムーズに保ち、セール終了後に無効化することで、必要な分だけ柔軟に利用することができます。

2. プランの変更前にキャッシュをフル活用する
リソースを強化する前に、まずはキャッシュが効果的に機能しているかを確認しましょう。キャッシュは、あらかじめ生成されたページを配信することで、訪問者のリクエストごとに PHP が実行されるのを防ぎます。適切に設定されていれば、商品ページやカテゴリページへのアクセスの大半は、そもそもサーバーに届くことすらありません。
オンラインストアでは一般的に、キャッシュ機能の活用がやや複雑になります。プラグインやテーマがno-cacheヘッダーを強制したり、買い物カゴや決済ページが不必要にキャッシュをバイパスしたり、CDNの設定に誤りがあったりすることがあります。これらの問題はそれぞれPHPのリソースを消費し、サイト速度に影響を与えます。
たとえば、小さなアパレルショップが夏のセールを行い、閲覧数が急に増えたとします。本来なら商品ページはキャッシュされるはずですが、テーマがno-cacheヘッダーを付けていたせいで、すべての訪問者のリクエストがPHPに到達してしまうなんてことも。
読み込み時間は3秒を超え、買い物客は次々と離脱していきます。この場合は、ヘッダーを修正し、CDN で「HIT」のレスポンスを確認すると、同じトラフィック量でもPHPへの負荷はほとんどなくなります。その結果、買い物カゴの操作や決済処理のためのリソースを十分に確保できます。
したがって、以下の点を確認してみてください。
- 主要なキャッシュバイパスを確認し、不要なスキップを特定
- シークレットウィンドウでテストし、新規訪問者の見え方をチェック
- キャッシュヘッダーが正しく動作しているか確認し、オリジン応答ではなく「HIT」になっているかを確認
Kinstaのキャッシュ機能
Kinstaでは、複数のキャッシュレイヤーを自動処理しています。MyKinsta内では各キャッシュを微調整したり、クリアしたりすることが可能です。
サーバーレベルキャッシング
サーバーレベルのページキャッシュは、完全なHTMLページをサーバーに保存し、訪問のたびにPHPがページを再構築する負荷を解消します。すべてのサイトでデフォルトで有効になります。
MyKinstaにログイン後、「WordPressサイト」>(サイト名)>「キャッシュ」>「サーバーキャッシュ」に移動して、クリアすることができます。

エッジキャッシュ
エッジキャッシュは、Cloudflareのグローバルネットワークを利用して、同じ構築済みのページを各訪問者に最も近いデータセンターから配信します。MyKinstaで「WordPressサイト」>(サイト名)>「キャッシュ」>「エッジキャッシュ」に移動して、有効・無効にすることができます。

エッジキャッシュを利用することで、待ち時間が劇的に短縮され、オリジンサーバーからの負荷がさらに軽減されます。
CDNキャッシュ
KinstaのCDNは、画像、CSS、JavaScriptなどの静的ファイルをエッジでキャッシュします。

画像の最適化を設定したり、特定のファイルを除外したりすることも可能です。
キャッシュを手動でクリアする
すべてを一度にクリアするには(サーバー、エッジ、CDN)、「WordPressサイト」>(サイト名)>「キャッシュ」の「全てのキャッシュをクリア」をクリックするか、WP-CLIコマンド「wp kinsta cache purge –all」を使用します。

3. データベースの負担を減らす
PHPとキャッシュを最適化していても、データベースがパフォーマンスに悪影響を与えることがあります。商品フィルター、カテゴリページ、検索クエリごとに作業負荷がかかり、トラフィックの多い時期にはその負担は急速に増大します。
たとえば、数百の商品を扱う日用品ストアが、連休のプロモーションを実施しているとします。カテゴリページではすべての商品を一度に読み込み、さらにフィルターを使うたびに重いデータベースクエリが走ります。
トラフィックが増えるにつれてページはどんどん遅くなり、イライラした訪問者が次々と離脱。このような状況では、商品結果を適切にページネーションし、使われていないフィルターを取り除くだけで、データベースへの負荷を大幅に削減することが可能です。結果として、トラフィックのピーク時でも決済のリクエストがスムーズに処理されます。
データベースを軽量に保つ簡単な方法はいくつかあります。
- Autoloadedオプションを整理:古いプラグイン設定や未使用のデータは、
wp_optionsテーブルに蓄積され、クエリを遅くします。Kinstaでは、phpMyAdmin(MyKinstaでサイトを選択し、「情報」>「データベースへのアクセス」)で利用可能)またはSSHで接続し、SELECT option_name, length(option_value) FROM wp_options WHERE autoload='yes' ORDER BY length(option_value) DESC;のようなクエリを実行して、大きなautoloadedオプションを特定することができます。 - 使用していない商品フィルターを除外:WooCommerceまたはフィルタープラグインの設定で、コンバージョンに影響しないフィルター(色、ブランド、サイズなど)を削除します。有効なフィルターはすべて、商品アーカイブページにクエリを追加します。MyKinstaのAPMツールを使って、買い物客がフィルターを使用した際に急増するクエリを特定し、コストに見合わないものを無効にしましょう。
- 長いループはページネーションで分割:一度に何百もの商品や投稿を読み込むと、データベースに不必要な負担がかかります。テーマやカスタムテンプレートでは、
posts_per_page(20や30など)の制限を設けたWP_Query、ページネーションや「詳しく見る」などのボタンを有効にしましょう。商品グリッドは軽量に保ち、ページが急増しても素早くレンダリングできるようにします。 - transientsと検索プラグインを監査:検索ツールの設定を誤ると、必要以上にデータベースに負荷がかかることがよくあります。transients(一時データ)も
wp_optionsに保存され、放置すると膨れ上がります。WP-Optimizeのようなプラグインを使用するか、直接phpMyAdminでDELETE FROM wp_options WHERE option_name LIKE '%_transient_%';を実行すると解決できます。この方法は、『WordPressサイト高速化のヒント』でもご紹介しています。
監視ツール(APMなど)で同一のクエリが繰り返されたり、リクエストごとのデータベース時間が一貫して長かったりする場合は、Redisの使用を検討するといいかもしれません。基本的には、キャッシュとPHPが適切にチューニングされていれば、ほとんどのストアでは不要です。予測される収益がコストを上回る場合は、必要時にRedisを導入する価値がありそうです。
データベースのクリーンアップを行うことで、ストアのリソースを無駄にすることなく、売上につながるリクエストをスムーズに処理する能力を確保することができます。
監視ツールでのパフォーマンスチェックは必須
上記のような改善を行った後は、正しく機能しているかを確認することも欠かせません。MyKinsta(特に組み込みの分析機能)やAPMのようなツールを使えば、ボトルネックを簡単に特定可能です。PHPスレッドの滞留、キャッシュミス、遅いデータベースクエリなど、どこで問題が起きているのかがひと目でわかります。

キャンペーン実施前、実施中、そして実施後にこのような指標をチェックすることで、サイトのどこに負荷がかかっているかを正確に把握し、調整に効果があるかどうかを知ることができます。
まとめ
大規模なセールや急なトラフィック増加に対処するために、必ずしもサーバープランのアップグレードが必要になるわけではありません。適切に最適化を行えば、小規模なストアでも一時的なアクセス集中に対応可能です。
短期的なスパイクの吸収にPHPパフォーマンスアドオンの使用、キャッシュのフル活用、そしてデータベースの整理をすべて実行することで、大事な決済を高速かつ安定して処理することができます。
500エラーの防止や遅延の解消にもつながり、より多くのユーザーが注文を完了できるようになります。キャンペーンや期間限定のプロモーションを実施予定であれば、事前にPHPパフォーマンスアドオンを有効にし、効果的なキャッシュ設定と定期的なデータベースメンテナンスをセットで行うことをおすすめします。