Kinsta APMを使用すると、WordPressサイトのPHPパフォーマンスのボトルネックを容易に特定することができます。New Relicなどのようなサードパーティ監視ツールは不要です。

Kinsta APMは、すべてのプランに無料で付帯しており、WordPressサイトのワーカープロセス、MySQLデータベースクエリ、外部HTTP呼び出しなどに関する情報をタイムスタンプ付きで確認できます。サイトのトラブルシューティングに有用です。

読み込みの遅い特定のページを調べ、問題の根本原因を特定することができます。Kinsta APMを活用し、パフォーマンスの問題を解決する方法については、以下をご覧ください。

なお、Kinsta APMは、WordPressサイトの監視に特化して設計されているため、他のCMSやフレームワークで稼働するサイトを監視すると、正確な情報が得られない可能性があります。したがって、WordPressサイトのみで使用することをお勧めしています。

APMに関する用語の説明

Kinsta APMの使用方法をご紹介する前に、主要な用語の定義をご紹介します。

APM

「アプリケーションパフォーマンス監視」の略で、アプリケーションのパフォーマンスデータと傾向を把握するためのツールです。Kinsta APMを使って、WordPressサイトのパフォーマンスに関する実用的なデータを収集できます。

リクエスト

APMツールの文脈では、レンダリングするためにPHPの実行を要するWordPressサイトへのリクエストを指します。リクエストURLには、様々なクエリ文字列パラメータを使用でき、これが対応するトランザクションをトリガーします。

例えば、yourdomain.com/wp-cron.php?arg=1&arg2=2へのリクエストは、/wp-cron.phpのトランザクションをトリガーします。

トランザクション

WordPressサイトにリクエストを送信するバックエンドの処理を指します。例えば、/wp-login.php へのリクエストのトランザクションには、WordPressサイトのログインページを生成する複数のワーカープロセスが含まれます。

スパン

トランザクション内の単一のプロセスを指します。1つのトランザクションは、階層的に並んだ数百のスパンで構成されることがあります。

例えば、WooCommerceで顧客のアカウントページを生成するトランザクションの中身は、複数のデータベースクエリスパンである可能性があります。

トランザクションの例

特定のトランザクションエンドポイント(/single.php、/wp-cron.phpなど)への多くのリクエストの内の一つのリクエストを指します。APMでは、3つの例からご選択いただけます。

例えば、APMが数十の/wp-cron.phpトランザクションを記録することがあります。その際には、最も遅いトランザクションが選択され、トランザクションの例となります。

トランザクショントレース

トランザクションの例で発生した、すべてのプロセスをタイムラインとして表示したものです。Kinsta APMのトランザクショントレースは、スパンの期間とタイムスタンプを含むかたちで一覧表示されます。

トランザクショントレースのタイムライン
トランザクショントレースのタイムライン

スタックトレース

スタックトレースは、単一のスパンの内訳を詳しく説明したものです。細かな分析やデバッグの際に効果を発揮します。特定のPHPファイルやコードなど、実行されたPHPに関する非常に詳しい情報を確認することができます。

スパンのスタックトレース
スパンのスタックトレース

Kinsta APMを使用する

Kinsta APMは、デフォルトでは無効になっています。APMツールの使用は、サーバーリソースを消費することになるため、WordPressサイトのパフォーマンスの問題をトラブルシューティングする場合にのみ有効化してください。

Kinsta APMを有効化するには、MyKinstaにログイン後、該当のサイトを選択し、「APM」に移動します。「APMを有効化」をクリックしてください。

Kinsta APMを有効化
Kinsta APMを有効化

次に、監視する期間を決定します。2時間、4時間、12時間、24時間から選択可能です。Kinsta APMはサイトのパフォーマンスを低下させる恐れがあるため、長時間有効にしないようにご注意ください。期間を選択したら「監視の有効化」をクリックし、Kinsta APMを起動します。

監視時間を選択してKinsta APMを有効化
監視時間を選択してKinsta APMを有効化

データの収集を開始するまで、5~10分ほどかかることが予想されます。しばらくすると、「APM」画面にデータが表示されます。

APMは、監視期間を過ぎると自動で停止します。設定した期間よりも早く無効にするには、縦3点リーダーをクリックし、ドロップダウンメニューから「無効化」をクリックしてください。

Kinsta APMを手動で無効化
Kinsta APMを手動で無効化

監視時間枠を変更する

デフォルトでは、過去60分間の監視データが表示されますが、この時間枠は変更することができ、以下から選択可能です。

  • 30分間
  • 60分間
  • 2時間
  • 4時間
  • 12時間
  • 24時間

変更するには、「APM」画面右上にある時間枠のドロップダウンメニューをクリックし、表示される「時間枠の選択」画面で任意の期間を選択し、「時間枠を変更する」をクリックして、変更を保存してください。

監視時間枠を変更
時間枠を変更

監視データを更新する

KinstaのAPMでは、設定された時間枠(過去30分、過去60分など)のパフォーマンス監視データが表示されます。混乱が起きないように、このデータが自動で更新されることはありません。選択した時間枠の最新データを表示するには、画面上部の時間枠ドロップダウンメニューの横にある円形のやり直しアイコン(「データを更新」)をクリックします。

やり直しアイコンをクリックすると監視データを更新できる
やり直しアイコンをクリックすると監視データを更新できる

監視データの読み方

データの記録はAPMツールが有効になるまで開始されないため、サイトのパフォーマンスデータが収集されるまでしばらく時間がかかります。5〜10分程度時間を置いた上で、監視データの確認を行うことをお勧めします。

監視データは「トランザクション」、「WordPress」、「データベース」、「外部」の4つのタブに分かれています。

監視データはトランザクション、WordPress、データベース、外部の4つのタブに分けられる
監視データはトランザクション、WordPress、データベース、外部の4つのタブに分けられる

すべてのタブで表示される共通の項目は以下の通りです。

  1. 合計時間(%):選択した時間枠内にトランザクションエンドポイントによって使用された時間の割合。期間のパーセンテージは「期間(時間)」の値をベースにして計算されるため、個々のトランザクションの例の期間を表すものではありません。
  2. 合計時間:選択した時間枠内にトランザクションエンドポイントによって使用された合計時間。期間は、個々のトランザクションの例の期間を表すものではなく、エンドポイントへのすべてのリクエストの期間の合計を示すことにご注意ください。
  3. 最大時間: 選択した時間枠内の最も遅いトランザクションの例の期間。
  4. 平均時間:選択した時間枠内のすべてのトランザクションの例の期間の平均。
  5. 1分あたり:選択した時間枠内でトランザクションが1分あたりに実行された回数の平均。

以下、それぞれのタブで確認できるデータについてご紹介します。

トランザクションの例

「トランザクション」タブでは、選択した時間枠のトランザクションの例が最大3つ表示されます。

  1. 最も遅い例:最も遅いトランザクションの例。
  2. 95パーセンタイル:95パーセンタイルのトランザクション(95%がこのトランザクションの例よりも高速)。
  3. 50パーセンタイル:50パーセンタイルのトランザクション(50%がこのトランザクションの例よりも高速)。中央値とも呼ばれ、このトランザクションより速いトランザクションの数と、このトランザクションより遅いトランザクションの数がまったく同じであるため、トランザクションの一般的な長さと考えることができます。
トランザクションの例
トランザクションの例

十分な監視データがあれば、3つのトランザクションの例が表示されますが、十分なデータがない場合には、1つまたは2つの例が表示されます(例えば、同じトランザクションが「最も遅い例」と「95パーセンタイル」の両方になることがあります)。

トランザクションの例」画面では、タイムスタンプ、トランザクションのエンドポイント、リクエストURL、期間など、各トランザクションの例に付随する情報も確認できます。

個々のトランザクションの例

モーダル内にある個々のトランザクションの例をクリックすると、それに関する情報を掲載したページが表示されます。この「トランザクションの例」の画面には、例についてのタイムスタンプ、トランザクションのエンドポイント、URL、期間、HTTPステータスコード、およびトランザクショントレースのタイムラインが表示されます。

トランザクショントレースのタイムラインが表示されたトランザクションの例
トランザクショントレースのタイムラインが表示されたトランザクションの例
  1. タイムスタンプ:トランザクションの例の日付と時刻。
  2. トランザクション:トランザクションの例のPHPエンドポイント(/wp-cron.php、/single.phpなど)。
  3. URL:トランザクションの例の具体的なURL。
  4. 期間:トランザクションの例の期間(ミリ秒単位)。
  5. 結果:トランザクションのHTTPステータスコード。「HTTP 200」が表示されると、トランザクションが正常に実行できたことを意味します。「HTTP 503」が表示された場合は、トランザクションがタイムアウトした可能性があります。

各トランザクションの例には、パーマリンク(一意のURL)があります。これによって、チームや開発者、または弊社カスタマーサポートへの特定のトランザクションの例を共有することが容易になります。注意)チームメンバーや開発者などがトランザクションの例を確認するには、MyKinsta上でアクセス権限が必要になります。

トランザクションの例のパーマリンク
トランザクションの例のパーマリンク

トランザクショントレースのタイムライン

Kinsta APMでは、基本的なトランザクション情報だけでなく、より詳細なトランザクショントレースのタイムラインも確認することができます。トランザクショントレースのタイムラインでは、スパン(ワーカープロセス、MySQLデータベースクエリ、特定のトランザクションの例の外部呼び出し)が表示されます。

列にある名前をクリックすることで、スパンを期間(時間)または期間(%)で昇順または降順に並べ替えることができ、最も長い間実行されたトランザクションの特定に便利です。

各スパンの期間と相対タイムスタンプも表示されるため、リクエストの中でも最も遅く、最も問題のある部分を即座に見つけることができます。

トランザクションの例の合計期間については、以下の情報が表示されます。

  • 時間が5%を超えるスパンはオレンジ色
  • 時間が25%を超えるスパンは赤色

上記のデータは、該当する例で考えた時のスパンの相対的な期間です。したがって、赤色のデータが表示された場合、それは該当する例と比較したデータであることをご了承ください。サイトやウェブアプリ全体が必ずしも遅くなっているとは限りません。

なお、MySQLおよびRedisのクエリの場合、0.001ミリ秒未満のスパンは含まれません。データベースに関連しないスパンについては、しきい値を1ミリ秒に設定しています。多数の高速である要素を記録すると、その処理自体がパフォーマンスに悪影響を与える可能性があり、加えてあまり有用なデータが得られないため、短いスパンを意図的に除外しています。

トランザクショントレースのタイムライン
トランザクショントレースのタイムライン

この詳細なトレースタイムラインは、ボトルネックを正確に突き止めることができるため、パフォーマンスの問題をトラブルシューティングする際に非常に有効です。

例えば、/wp-admin/admin-ajax.phpを要求したときに、SNS APIの呼び出しが原因で遅延が発生していると推測できたとします。これをもとに、SNSプラグインを無効にしてサイトのテストを続け、速度に違いが出るか確認することができます。

同様に、キャッシュプリロードプラグインが原因で/wp-cron.phpへの同じHTTPリクエストが何回も発生している場合には、その機能を無効にすることができます。

スパンの詳細

トランザクショントレースのタイムラインでスパンをクリックすると、スタックトレース全体と関連情報を確認できます。

例えば、MySQLクエリスパンをクリックすると、スタックトレースだけでなく、実行されたデータベースクエリも表示されます。スパンの中身を調べることにより、WordPressサイトでのPHPトランザクションについての詳しいデータを確認することができます。

スパンの詳細
スパンの詳細

Kinsta APMでのデータの読み方や使用事例については、ドキュメント「APMツールを使用してパフォーマンスの問題を特定する」をご覧ください。

監視結果

「APM」画面の各タブでは、トランザクション、WordPress、データベース、および外部リクエストの特定データを確認することができます。

トランザクション

このタブでは、合計トランザクション時間と最も遅いトランザクションに関する情報が表示されます。

合計トランザクション時間

選択した時間枠のトランザクション時間を視覚的に確認することができます。PHP、MySQL、Redis、および外部が色別で表示されます。また、選択した時間枠の平均トランザクション時間がセクション右上に表示されます。

合計トランザクション時間
合計トランザクション時間

最も遅いトランザクション

最も遅いPHPトランザクション上位10件が表示されます。上でご紹介したすべてのタブに共通する項目に加え、「トランザクション」列には、最も時間のかかったリクエストのトランザクションエンドポイントが表示されます(/wp-cron.php、/wp-jsonなど)。

最も遅いトランザクション
最も遅いトランザクション

各トランザクションのエンドポイントをクリックして、トランザクションの例を表示すると、個々のトランザクションの例、トレースタイムライン、スパンの詳細、スタックトレースに移動できます。

WordPress

WordPress」タブでは、WordPressのプラグインとフックに特化したデータが表示されます。

最も遅いWordPressプラグイン

1番左の列にプラグインのスラッグ(フォルダ/ディレクトリ名)、そして上でご紹介した共通項目が表示されます。各プラグインのスラッグをクリックすると、トランザクションの例が表示され、さらに個々のトランザクションの例、トレースタイムライン、スパンの詳細、スタックトレースを確認できます。

最も遅いWordPressフック

WordPressフックとは、テーマやプラグインに含まれる関数で、コードの処理中の特定の場所でWordPressに変更を加えることができます。

フックは、アクションまたはフィルタのどちらかであり、このセクションのフックには、タイプ(アクションまたはフィルタ)の前に関数名が表示されます。フックをクリックするとトランザクションの例が表示され、さらに個々のトランザクションの例、トレースタイムライン、スパンの詳細、スタックトレースを確認できます。

データベース

データベース」タブには、最も遅いデータベースクエリと最も遅いRedisキャッシュ(Redisが有効な場合)のデータが表示されます。

最も遅いデータベースクエリ

最も遅いデータベースクエリの上位10件が表示されます。クエリをクリックすると、トランザクションの例が表示され、さらに個々のトランザクションの例、トレースタイムライン、スパンの詳細、スタックトレースを確認できます。

最も遅いRedisキャッシュ

Redisアドオンをインストールしている場合は、Redisキャッシュに関するデータが表示されます。Redisアドオンを使用していない場合は、何も表示されません。キャッシュ項目をクリックするとトランザクションの例が表示され、さらに個々のトランザクションの例、トレースタイムライン、スパンの詳細、スタックトレースを確認できます。

外部リクエスト

サイトが行う外部リクエストのデータは、「外部」タブで確認可能です。外部リクエストとは、サイトが他のサイトやサーバーに送信するHTTPリクエストです。この呼び出しは、データの取得や送信、APIとの通信のためにプラグインやテーマによって実行されるのが一般的です。

1番左側の列にはURLが表示され、リクエストに使用されたHTTPメソッド(GET、POST、PUTなど)が続きます。URLをクリックすると、トランザクションの例が表示され、さらに個々のトランザクションの例、トレースタイムライン、スパンの詳細、スタックトレースを確認できます。

よくある質問

Kinsta APMに関するよくある質問、およびその回答をまとめました。

Kinsta APMはどのように有効化できますか?

Kinsta APMは、すべてのプランで無料でご利用いただけます。手順は、以下の通りです。

  1. MyKinstaにログイン
  2. デバッグしたいウェブサイトを選択
  3. 左側メニューから「APM」をクリック
  4. APMを有効化」ボタンをクリック

Kinsta APMを利用するとサイトの速度に影響を与えますか?

他のAPMツールと同じように、Kinsta APMのエージェントもサーバーのCPUとRAMリソースに負荷を与える可能性があるため、一時的にWordPressサイトの速度を低下させる可能性があります。

サイトのパフォーマンスに関する問題を調べている間のみ、ご利用いただくことをおすすめします。

New Relicを利用しているのですが、New Relicのモニタリングもまだサポートしていますか?

個人用ライセンスをお持ちのお客様向けに、New Relicのモニタリングも引き続きサポートしています。

Kinsta APMとNew Relicを併用することはできますか?

原則、Kinsta APMとNew Relicの併用は推奨しておりません。同時に有効化しない限りは、必要に応じて、Kinsta APMとNew Relicを切り替えながらご利用いただくことは可能です。

他のCMSプラットフォームやフレームワークと互換性はありますか?

現時点で完全な互換性があるのは、WordPressのみとなります。

Bedrock(またはComposerを使用する他のサイト)でも動作しますか?

Bedrockでも動作しますが、WP-CLIがサイトのcomposer.jsonファイルの依存関係である場合は、弊社とWP-CLIのオートローダーが連携するよう、別途設定を行なってください。

"prepend-autoloader": false

prepend設定後、Bedrockサイトのconfig配列は、以下のようになります。

"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"prepend-autoloader": false
},

APMツールの有効化後、サイトに予期せぬ動作が見られた場合はどうすればいいですか?

弊社では、あらゆるWordPressのバージョンとプラグインで広範なテストを実施していますが、プラグインのバージョンやカスタム開発環境との互換性の問題など、未知のエラーが発生する可能性もございます。

したがって、Kinsta APMを有効化した後は、サイトが正常に動作しているかどうかを必ず再確認してください。何かしらの不備が見られた場合は、すぐにAPMを無効化し、弊社カスタマーサポートまでご報告ください。

監視データの保存期間はどのくらいですか?

Kinsta APMのデータは14日間保持されます。24時間より古いデータを表示するには、「APM」画面右上にある時間枠のドロップダウンメニューをクリックし、「時間枠の選択」画面で「絶対」タブを選択し、過去14日以内の24時間の時間枠を選択して、「時間枠を変更する」をクリックしてください。

まとめ

Kinsta APMを使用すると、WordPressサイトのパフォーマンス面での問題について、詳しいデータを獲得することができます。一般的なHTTP 502エラータイムアウトエラーではなく、時間のかかっているリクエストの詳しい情報が手に入ります。

すべてのプランに追加費用なしで付帯しているため、Query Monitorのようなプラグインをインストールしたり、New Relicのようなサードパーティサービスを契約したりせずに、パフォーマンスの問題をデバッグすることができます。

WordPressサイトのエラーを解決するため、開発者の手を借りている場合も、Kinsta APMの詳細データを共有することによって、手間と費用の削減につながります。