# サイトパフォーマンスとAPM

Source: https://support.kapsulehost.com/ja-jp/site-performance

アプリケーションパフォーマンスモニタリングは、WordPressおよびWooCommerceサイト向けに、サイトの処理時間が実際にどこで費やされているかを示します。応答時間のパーセンタイル、最も遅いURL、最も遅いデータベースクエリ、そしてPHPがどれだけ負荷を受けているかがわかります。本ガイドでは、APMの有効化、各パネルの読み方、そしてそこで示される内容への対処方法について説明します。

## KPanelにおけるAPMの場所

1. [KPanel](https://kpanel.kapsulehost.com)にサインインします。
2. 左サイドバーの**ウェブサイト**をクリックし、該当するサイトをクリックします。
3. サイトの左メニューで**パフォーマンス**を開き、次に**APM**を開きます。

直接アクセスするアドレスは`/websites/<site-id>/performance`です。

![KPanelにおけるサイトのアプリケーションパフォーマンスモニタリング](https://support.kapsulehost.com/help/screenshots/site-performance.4533b9b8.webp)

> **Note:** APMはプラン特典です。Managed WordPress Proに含まれています。それ以外のプランでは、このページにダッシュボードの代わりにAPMの内容を説明するアップグレードパネルが表示されます。このパネルが表示された場合、機能がオフになっているのではなく、現在のプランでは利用できないということです。

## APMを有効にする

APMは有効化するまでオフになっています。対象プランでは、ページに**アプリケーションパフォーマンスモニタリング**カードと**APMを有効にする**ボタンが表示されます。

有効化すると、軽量なアクセスログとPHPワーカーレベルでの低速リクエストトラッカーが追加されます。ページに何かを挿入することはなく、訪問者のリクエストに負荷を加えることもないため、常時有効のままにしておいても安全です。

有効化すると、ページには**APMはアクティブです**のピルと有効化した日付、**更新**ボタン、**APMを無効にする**ボタンが表示されます。メトリクスは実際のトラフィックが到着して初めて表示されるため、アクセスの少ないサイトではしばらく**リクエスト待機中**と表示されます。

## 応答時間

最初のカードには、直近1時間分の4つの数値が、リクエスト数と計測時刻とともにヘッダーに表示されます。

| 指標 | 意味 |
|---|---|
| 中央値（P50） | リクエストの半数がこの時間より速かったことを示します |
| P95 | リクエストの95パーセントがこの時間より速かったことを示します |
| P99 | リクエストの99パーセントがこの時間より速かったことを示します |
| 5xxエラーレート | サーバーエラーで失敗したリクエストの割合です |

各タイルは色分けされているため、しきい値を知らなくても状態を把握できます。

パーセンタイルは個別にではなく、まとめて読むようにしてください。中央値が良好なのにP95が非常に悪い場合、ほとんどのリクエストは問題なく、少数が深刻に遅いということであり、これは1つの遅いページ、1つの遅いクエリ、あるいは特定のURLでキャッシュがミスしている場合の典型的な兆候です。中央値自体が悪い場合は、サイト全体が遅いということであり、原因は通常、プランの容量不足、重いテーマ、またはキャッシュが無効になっているといった構造的な問題です。

5xxエラーレートはゼロであるべき唯一の数値です。ゼロを超える状態が続いている場合、訪問者には失敗が見えているということです。

## PHPワーカー

**PHPワーカー**カードには、3つの数値が表示されます。

- **アクティブワーカー**: 現在リクエストを処理しているPHPプロセスの数です。
- **低速リクエスト**: 低速リクエストのしきい値を超え、記録されたリクエストです。
- **合計処理数**: プール開始以降に受け入れられた接続数です。

アクティブワーカーは飽和状態を示す指標です。通常のトラフィック時に上限付近に張り付いている場合、リクエストはPHPの処理待ちで滞留しており、上記の応答時間はいずれも一部が待機時間ということになります。これはコードの問題ではなく容量の問題であり、解決策はより大きなプランにするか、リクエストごとの処理負荷を減らすことです。

低速リクエストの件数がリクエスト量が一定のまま増加している場合、何かの処理が重くなったということです。

## 最も遅いエンドポイント

このカードには、P95応答時間順に最も遅いURLが一覧表示され、それぞれにバー、ミリ秒単位のP95、受け取った呼び出し回数が表示されます。色は最も問題のある項目を示します。

これはランキング表としてではなく、候補リストとして読んでください。注目すべきは、「遅い」かつ「頻繁に呼び出される」の重なりの部分です。4秒かかるが1日に2回しかアクセスされないページよりも、900ミリ秒かかるが1万回アクセスされるページのほうがはるかに重要です。

よくある原因:

- インデックスを使わずにスキャンする**検索ページ**。
- リクエストごとに大きなクエリを構築する**カテゴリーやアーカイブの一覧ページ**。
- 訪問者ごとに内容が異なるためキャッシュされることのない**カート、チェックアウト、アカウントページ**。どのパスが設計上キャッシュを回避するかについては、[サイトキャッシュ](https://support.kapsulehost.com/ja-jp/site-cache)を参照してください。
- 常に動的である**管理用URL**。
- リクエスト内で外部APIを呼び出す処理。この場合、計測しているのは他者のサーバーです。

## 低速クエリ

**低速クエリ**カードには、データベース自身のパフォーマンスデータから取得した、平均100ミリ秒を超えるデータベースクエリが一覧表示されます。各行には、平均時間、最大時間、呼び出し回数、正規化されたクエリテキストが表示されます。

クエリテキストはダイジェストであり、リテラル値は取り除かれているため、パラメータが異なる同一クエリは1行にまとめられます。これにより呼び出し回数が意味を持ちます。

低速クエリの修正は、通常、次の3つのいずれかです。クエリが必要とするインデックスを追加する、結果をキャッシュしてクエリの実行頻度を下げる、あるいはそのクエリを発生させているプラグインを削除する、のいずれかです。呼び出し回数が非常に多く平均時間が中程度のクエリは、単発の極端な外れ値よりも、総計では悪影響が大きいことがよくあります。

エンドポイント一覧とクエリ一覧の両方が空の場合、カードには低速リクエストが検出されなかったと表示され、これは直近1時間はすべて通常のしきい値内だったことを意味します。

## APMを上手に活用する

**基準値を取得する。** サイトが正常な状態のときの数値を確認し、通常がどのような状態かを把握しておきましょう。P95が700ミリ秒であっても、それが以前300ミリ秒だったことを知らなければ意味がありません。

**一度に1つずつ変更する。** キャッシュを有効にして、更新し、比較します。疑わしいプラグインを無効化して、更新し、比較します。複数の変更をまとめて行うと、判断材料が得られません。

**意図的に更新する。** **更新**ボタンは、要求に応じてメトリクスを再取得します。数値は直近1時間分を対象としているため、変更を評価する前に少し時間を置いてください。

**APM以外も確認する。** APMはアプリケーションを計測します。問題がコードではなくネットワークやエッジにある場合は、代わりに[サイトトラフィック分析](https://support.kapsulehost.com/ja-jp/site-analytics)や[サイト稼働監視](https://support.kapsulehost.com/ja-jp/site-uptime-monitoring)がそれを示してくれます。

## トラブルシューティング

**ページにアップグレードパネルが表示される。** APMはManaged WordPress Proに含まれています。他のプランでは利用できません。

**APMはオンだがメトリクスが表示されない。** まだトラフィックがありません。サイトがリクエストを受け取ると、メトリクスが表示されます。

**APM上の応答時間は良好だが、サイトは遅く感じる。** APMはサーバー側の時間のみを計測します。画像のダウンロード、JavaScriptの実行、ブラウザでのフォント読み込みに費やされる時間は、ここには表示されません。サーバー時間が良好なのにページが遅く感じる場合、問題はフロントエンド側、またはブラウザに取得させている内容にあります。

**プラグインの更新後にP95が悪化した。** まず最も遅いエンドポイント一覧を確認し、次に低速クエリ一覧を確認してください。すべてのページ読み込みにクエリを追加するようなプラグインは、両方の一覧に現れます。

**常にすべてが遅い。** まずPHPワーカーの飽和状況を確認してください。ワーカーが張り付いている場合、他の最適化を行う前に、容量を追加するかリクエストごとの処理負荷を減らしてください。

**エラーがゼロを超えている。** ミリ秒単位の改善を追う前に、これを修正してください。まずログを確認し、サイトの**エラーページ**タブにある**Koraでトラブルシューティング**ボタンを使うと、Koraがエラーログと直近の失敗内容を代わりに読み取ってくれます。[カスタムエラーページ](https://support.kapsulehost.com/ja-jp/site-error-pages)を参照してください。

## 関連ページ

- [サイトキャッシュ](https://support.kapsulehost.com/ja-jp/site-cache)は、通常WordPressサイトにとって最も効果の大きい改善策です。
- [サイトセキュリティ](https://support.kapsulehost.com/ja-jp/site-security)では、同じサイトでの脆弱性診断とマルウェアスキャンについて説明しています。
- プラグインの削除を始める前に、[バックアップの取得](https://support.kapsulehost.com/ja-jp/taking-a-backup)を行ってください。
