平均応答時間、平均読み込み時間、平均ベンチマークスコアなど、多くのサーバーは、サイトの速度を平均値で評価しています。しかし、実際の訪問者が体験するのは平均値ではありません。その瞬間に使用しているデバイスや通信環境で、目の前に表示されるページそのものです。

速度テストでは優れた結果が出ていても、購入手続きに進んだとき、会員がログインしたとき、フォームを送信したとき、あるいは急激にアクセスが増えたときに、サイトが遅く感じられることがあります。このような遅延は、こうした遅延は、全体のごく一部のアクセスでしか発生しないかもしれませんが、多くの場合、そのような場面こそがユーザーにとって最も重要なタイミングです。

そのため、パフォーマンスの一貫性にも目を向けなければなりません。最高速度も重要ですが、安定して予測どおりの速度を維持することが、より快適なユーザー体験につながります。

特に、ECサイトや会員制サイト、LMSを利用したサイト、管理画面での作業が多いサイト、あるいはトラフィックの変動が大きいWordPressサイトでは、重要なのは「どれだけ速くできるか」だけではなく、「どれだけの頻度で、その速さを維持できるか」です。

平均値に基づくパフォーマンス評価の問題点

平均速度は、多くの処理結果を1つのシンプルな数値にまとめられるため、アピールしやすい指標です。比較やレポート、マーケティングにも使いやすいというメリットがあります。

しかし、平均値では、訪問者の印象に残りやすい問題が見えなくなってしまうことがあります。

たとえば、ほとんどの訪問者にはページが高速に表示されていても、一部の訪問者では大幅に表示が遅れる場合があります。高速だったアクセスと低速だったアクセスを平均すると、最終的な数値は十分良好に見えるかもしれません。レポート上では問題がないように見えても、実際には一部のユーザーが待たされている可能性があります。

というのも、速度低下が均等に発生するわけではありません。多くの場合、以下のような特定の状況で発生します。

  • アクセスの急増時
  • キャッシュミスが発生したとき
  • ログイン中のユーザーによるアクセス
  • 決済処理
  • サイト内検索
  • フォームの送信
  • 管理画面での作業
  • ボットによるアクセス
  • データベースへの負荷が高いリクエスト

ホームページの速度テストだけでは、このような問題は見つからないことがあります。また、単一の平均応答時間だけでも実態は把握できません。月次レポートではサイトが高速に見えていても、実際には一部の訪問者が重要な場面で繰り返し遅延を経験している可能性があります。

WordPressサイトでは、こうした重要な場面は、WooCommerceのカート、会員制サイトのダッシュボード、LMSのレッスン画面、商品の絞り込み検索など、動的な処理が行われるページであることが少なくありません。

速度テストの結果が良好でも、全体像はわからない

速度テストは有用な指標です。明らかなパフォーマンス上の問題を発見したり、改善状況を継続的に確認したり、比較のための基準値として活用したりできます。

GTmetrixでの速度テストの例
GTmetrixでの速度テストの例

しかし、これらはあくまである一時点の状況を切り取った結果です。一般的な合成テストでは、1つのページを、1つの場所から、1つの時点で測定します。また、テストの設定によっては、理想的な条件下でキャッシュされたページを対象に計測している場合もあります。こうしたテストは、条件を揃えた比較や検証には役立ちますが、実際のユーザー体験をそのまま反映しているとは限りません。

実際の訪問者は、さまざまな条件でサイトを利用します。使用するデバイス、ブラウザ、ネットワーク環境、アクセス元はそれぞれ異なります。キャッシュされたページを表示するユーザーもいれば、キャッシュされていない、あるいは一部のみキャッシュされたリクエストを発生させるユーザーもいます。また、ログインしているユーザーもいれば、商品をカートに追加したり、フォームを送信したり、商品を検索したり、決済手続きに進んだりするユーザーもいます。

このような操作によって、WordPressサイトにかかる負荷は大きく変化します。

たとえば、合成テストではホームページが高速に表示されることを確認できても、セール期間中でも決済がスムーズに処理されるか、ログイン中の会員がダッシュボードを快適に操作できるか、検索機能を多用する商品ページがアクセス増加時にも十分な速度を維持できるかまではわかりません。

そのため、速度テストの結果が良好であるだけでは不十分です。テスト結果自体は正確でも、測定しているのは限られた条件下でのパフォーマンスであり、ユーザーにとって重要なあらゆる体験を評価しているわけではないためです。

p95とp99のパフォーマンスが重要な理由

平均値がパフォーマンスの「中間」を示すものだとすれば、パーセンタイルは「端」の状況を示します。

パフォーマンスのパーセンタイルを確認することで、一般的なアクセスだけでなく、速度が遅くなりがちなユーザーが実際にどのような体験をしているかを把握できます。すべてのリクエストを1つの平均値にまとめるのではなく、どの程度のアクセスで速度低下が発生しているのかを確認できるためです。

p95チャート
p95チャート

たとえば、p95は、全体のうち最も遅い5%のアクセスにおけるパフォーマンスを示します。p95の読み込み時間が長い場合、100回のアクセスのうち5回は、他のアクセスよりも明らかに遅いことを意味します。p99はさらに厳しく、最も遅い1%のアクセスにおけるパフォーマンスを示します。

5%や1%と聞くと、ごく一部のアクセスのように感じるかもしれませんが、アクセス数の多いサイトでは、その影響は決して小さくありません。

たとえば、月間10万回のアクセスがあるサイトでは、p95で示されるような低速なパフォーマンスは数千件ものセッションに影響を及ぼす可能性があります。それが決済、アカウントへのログイン、リード獲得、商品検索といった重要な場面で発生した場合、ビジネスへの影響はその割合以上に大きくなることがあります。

パーセンタイルが特に有用なのは、平均値では見えにくい傾向を明らかにできる点です。たとえば、平均応答時間は良好でも、アクセスの急増、キャッシュミス、データベースへの負荷が高いリクエスト、キャッシュされないECサイトの処理などによって、一部のユーザーには快適とは言えない体験を提供している可能性があります。

技術チームにとって、p95やp99はサーバーのパフォーマンスをより実態に即して評価するための指標になります。以下のような疑問に答えるのに役立ちます。

  • サイトの速度が低下するのはどの程度の頻度か
  • 最も遅いリクエストはどの程度まで遅くなるのか
  • 動的なページでも十分な応答性を維持できているか
  • アクセスが増えた状況でもパフォーマンスは安定しているか
  • 少数の低速なリクエストが、重要なユーザージャーニーに悪影響を及ぼしていないか

もちろん、これらの指標が平均速度に取って代わるわけではありませんが、平均値だけではわからない背景を把握するための重要な情報を提供してくれます。平均速度が速いことは望ましいですが、p95やp99が安定しているかどうかを見ることで、そのパフォーマンスが、速度低下に最も気付きやすいユーザーにも一貫して提供できているかを判断できます。

WordPressのパフォーマンスにばらつきが生じる原因

WordPressのパフォーマンスは、単一の要因によって決まるものではありませんが、大きく影響するのはサーバーにかかる処理不可です。

シンプルなキャッシュ済みページと、動的な決済処理は、同じサイト上に存在していても、サーバーに求められる処理内容は大きく異なります。サーバー環境が一方のリクエストには十分対応できても、もう一方では処理が追いつかない場合、パフォーマンスにばらつきが生じるようになります。

キャッシュされたページは、比較的処理しやすい

キャッシュを利用すると、WordPressサイトは非常に高速になります。ユーザーがキャッシュ済みのホームページ、ブログ記事、ランディングページなどにアクセスした場合、サーバーはページを毎回生成するのではなく、保存済みのページをそのまま配信できることがよくあります。その結果、PHPでの処理やデータベースへのクエリが減り、訪問者への応答時間も短縮されます。

そのため、ホームページの速度テストでは優れた結果が出ることが少なくありません。ホームページは軽量でキャッシュされていることが多く、サーバーへの負荷も比較的小さいためです。

しかし、WordPressで本当に重要な場面の多くは、このような単純な処理ではありません。

動的なページにはより多くのサーバーリソースが必要

WooCommerceのカートや決済ページでは、一般公開されているブログ記事のようにフルページキャッシュを利用できないことがほとんどです。表示内容は、ユーザーごとの情報やカートの内容、配送先情報、税金、クーポン、支払い方法、セッション情報などに応じて変化するためです。

同様に、以下のようなページや機能も動的な処理が必要になります。

  • ログイン後のアカウントページ
  • 会員制サイトのダッシュボード
  • LMSのレッスン画面や学習進捗の管理
  • パーソナライズされたコンテンツ
  • 商品の絞り込み検索やサイト内検索
  • フォームの送信
  • 管理画面やコンテンツ編集のワークフロー

こうしたリクエストを処理するには、PHPスレッドの実行、データベースへのクエリ、プラグインの処理、場合によってはサードパーティサービスとの連携が必要になるため、WordPressがレスポンスを返すまでにより多くの処理が発生します。

パフォーマンスのばらつきは、このような場面で生じやすくなります。あるユーザーはキャッシュされた記事を高速に閲覧できる一方で、その数秒後に別のユーザーがカートを更新したりフォームを送信したりすると、サーバーにははるかに負荷の高いリクエストが送られることになります。

プラグイン・テーマ・サードパーティサービスとの連携がパフォーマンスのばらつきを招くこともある

プラグインやテーマも、パフォーマンスを予測しにくくする要因のひとつです。

たとえば、プラグインによって商品ページで追加のデータベースクエリが実行されたり、テーマによってサイト全体で余分なスクリプトが読み込まれたりすることがあります。また、フォームプラグインが送信時に外部サービスを呼び出したり、配送、税金、CRM、アクセス解析、決済サービスとの連携によって、ユーザージャーニーの一部で待ち時間が発生したりすることもあります。

こうした問題は、必ずしもすべてのページに影響するわけではありません。ホームページは高速に表示されていても、決済、検索、アカウントページ、あるいはWordPressの管理画面では動作が遅くなることがあります。

そのため、このようなパフォーマンスのばらつきは原因を把握しにくいものです。サイト全体を単純に「速い」「遅い」と評価できるわけではなく、実際の速度はユーザーがどのような操作を行っているかによって大きく左右されます。

バックグラウンドタスクがアクセス処理と競合することも

WordPressサイトでは、訪問者が操作していないときでも、さまざまなバックグラウンドタスクが実行されています。商品データのインポート、予約投稿、バックアップ、プラグインの更新、セキュリティスキャン、アクセス解析、メールの同期、レポートの生成、管理画面での作業など、いずれもサーバーリソースを消費します。アクセスの少ない時間帯であれば、こうした処理はほとんど影響なく実行されますが、アクセスが集中している時間帯には、実際のユーザーからのリクエストとサーバーリソースを取り合うことがあります。

たとえば、WooCommerceストアでは、商品在庫の同期が実行される一方で、ユーザーが商品を閲覧したり決済手続きを進めたりしているかもしれません。会員制サイトでは、ログイン中のユーザーがレッスンページを表示している間に、メールの自動配信処理が実行されることがあります。また、コンテンツサイトでは、編集者が管理画面で作業している最中にバックアップが実行されることもあります。

それぞれの処理は単独で見れば問題のないものですが、同時に実行されることでサーバーへの負荷が高まり、レスポンス時間が長くなることがあります。

アクセスの急増やボットトラフィックは短時間でサーバー負荷を高める

サイトへのアクセスは、常に一定のペースで発生するわけではありません。セール、ニュースレターの配信、広告キャンペーン、SNSへの投稿、新商品の発売、メディア掲載などをきっかけに、一時的にアクセスが殺到することがあります。ボットによるアクセスでも同様の状況が起こることがあり、多くの場合、事前の予兆はありません。プロモーションによるアクセス増加とは異なり、ボットアクセスはビジネス上のイベントとは関係なく発生するため、事前に予測することも困難です。

ボットがサーバーに与える影響は、どのページにアクセスするかによって異なります。キャッシュされたページへのアクセスであれば、サーバーへの負荷は比較的小さく抑えられます。その一方で、カートページ、商品の絞り込みURL、検索クエリ付きのURLなど、キャッシュされない動的なエンドポイントにアクセスした場合は、1回のリクエストごとに実際のユーザーと同じサーバーリソースを消費します。こうしたアクセスが大量に発生すると、PHPの処理能力を使い切ってしまい、サイト自体に問題がなくても、正規のユーザーに対するレスポンスが遅くなることがあります。

アクセスの大半がキャッシュされたページに向けられている場合、サイトはアクセス増加にも比較的容易に対応できます。しかし、ボットや急激なアクセス増加によって、キャッシュされない動的なエンドポイントへのリクエストが増えると、サーバーにかかる負荷は一気に高まり、それに伴ってレスポンス時間も悪化します。

共有リソースでは、パフォーマンス低下の原因がわかりにくい

共用サーバー環境では、パフォーマンスの予測がさらに難しくなります。複数のサイトが同じCPUやメモリなどのリソースを共有している場合、あるサイトの負荷が別のサイトのパフォーマンスに影響を与えることがあります。WordPressサイト自体に変更がなく、プラグインも更新しておらず、アクセス数も通常どおりであっても、周囲でリソースの競合が発生すると、サイトの動作が遅くなる可能性があります。

このような予測しにくい要因があるため、原因の特定は容易ではありません。サイト自体を十分に最適化していても、周囲のサーバー環境の影響によって、一時的なパフォーマンス低下が発生することがあります。

最高速度よりも一貫したパフォーマンスが重要な理由

最高速度は、サーバーの性能をアピールするうえで説得力のある指標です。理想的な条件下で、サーバー環境がどれだけ高いパフォーマンスを発揮できるかを示すことができます。しかし当然ながら、訪問者は最高速度でサイトを評価するわけではなく、実際に自分が体験した速度で評価します。

たとえば、ホームページが速度テストで高速に表示されたとしても、決済がスムーズに処理されるとは限りません。キャッシュされたランディングページが高速でも、アクセスが集中したときに検索、ログイン、カートの更新、フォーム送信などがどのように動作するかはわかりません。また、ある場所から特定の時点で実施したテストで良好な結果が得られたとしても、そのパフォーマンスが一日を通して安定して維持されるとは限りません。

重要なのは、一貫して安定したパフォーマンスを維持できることです。

  • ECサイト:購入しようとしているユーザーがカートや決済ページを快適に利用できることが求められる
  • 会員制サイト:ユーザーが遅延なくログインし、コンテンツにアクセスできることが求められる
  • リード獲得を目的としたサイト:重要なタイミングでフォーム送信が止まることなく、スムーズに完了することが求められる

これは、制作会社や技術チームにも当てはまります。理想的な条件下でしか高いパフォーマンスを発揮できないサイトは、運用やサポートが難しくなります。原因の切り分けやトラブルシューティングが増え、クライアントへの説明も複雑になりがちです。一方、予測しやすく安定したパフォーマンスであれば、継続的な監視や状況の説明、改善にも取り組みやすくなります。

KinstaがWordPressサイトで安定したパフォーマンスを実現できる理由

一貫したパフォーマンスを実現するには、まずサーバー環境そのものが重要です。Kinstaでは、すべてのWordPressサイトを独立した専用のコンテナ内で実行しており、各サイトには他のサイトと共有しない専用リソースが割り当てられています。同じアカウント内のサイト同士であってもリソースは共有されません。そのため、別のサイトの負荷によって、原因がわからないままレスポンスが遅くなるといった問題を防ぐことができます。

また、Kinstaでは2つのレイヤーでキャッシュを活用しています。エッジキャッシュでは、キャッシュされたHTMLを世界中のデータセンターに配信し、訪問者に最も近い拠点からページを提供します。これにより、最大40%のパフォーマンス向上が期待できるほか、キャッシュ可能なリクエストではPHPを経由せずにページを配信できるため、PHPスレッドを消費しません。その結果、PHPの処理能力を、本当に必要なリクエストに割り当てることができます。さらに、フルページキャッシュを利用できない動的なページについては、Redisオブジェクトキャッシュがメモリ上にデータベースクエリの結果を保持することでデータベースへの負荷を軽減し、PHPが毎回同じクエリを実行する必要をなくします。

エッジキャッシュとRedisによって、より多くのリクエストがPHPを経由せずに処理されるため、PHPスレッドは、本当に処理が必要なリクエストに集中できます。WooCommerceのキャッシュされないページ、会員制サイト、LMSコンテンツ、管理画面での作業、あるいはアクセスが不規則に集中するような複雑なWordPressサイトを運用するチーム向けに、KinstaではMyKinstaからPHPのパフォーマンスを可視化し、管理できる機能も提供しています。

KinstaでPHPのパフォーマンス設定を変更
KinstaでPHPのパフォーマンス設定を変更

可視性も重要です。Kinsta APMツールでは、PHPのパフォーマンスボトルネック、低速なMySQLクエリ、外部HTTPリクエストなど、特定のリクエストに影響を与えるバックエンド処理を特定できます。これにより、決済ページ、ログイン画面、アカウントページなどの表示が遅い原因を推測するのではなく、リクエストのどの処理に最も時間がかかっているのかを詳細に調査できます。

MyKinstaでAPMツールを利用する
MyKinstaでAPMツールを利用する

もちろん、適切なサイト設計、品質の高いコード、最適化されたプラグイン、適切なキャッシュ設定の重要性がなくなるわけではありません。しかし、Kinstaは、キャッシュされたページへのアクセス、キャッシュされないリクエスト、ログイン中のユーザーによる操作、管理画面での作業、そしてアクセス数の増減など、実際のWordPressサイトで発生するさまざまな状況にも安定して対応できる基盤を提供します。

平均速度が速くても、常に快適なユーザー体験につながるとは限らない

平均速度は参考になる指標ですが、サーバー選びの際には、他の指標にも目を向けましょう。

ベンチマークでは高速な結果が出ていても、決済が遅くなったり、ログイン後のページの表示に時間がかかったり、検索結果の表示が遅かったり、フォーム送信が途中で止まったりすると、ユーザーはストレスを感じます。

こうした場面は平均パフォーマンススコアには大きく影響しないかもしれません。しかし、サイト全体の印象を左右するのは、むしろそのような体験です。

目指すべきなのは、キャッシュされたページ、動的なリクエスト、管理画面での作業、アクセスが継続的に発生する状況など、さまざまな条件でも安定したパフォーマンスを維持できることです。

平均的に速いことと、コンバージョンにつながる重要なタイミングでユーザーが快適に利用できることは、必ずしも同じではありません。

一貫したパフォーマンスを重視したWordPress用サーバーをお探しなら、KinstaのWordPress専用マネージドクラウドサーバーをご覧ください。

Joel Olawanle Kinsta

Kinstaでテクニカルエディターとして働くフロントエンド開発者。オープンソースをこよなく愛する講師でもあり、JavaScriptとそのフレームワークを中心に200件以上の技術記事を執筆している。