「WordPressが遅い」「ページが切り替わるのに時間がかかってストレス」そういった状況を改善したい場合、様々な観点から対処することが求められます。そしてその多くは専門的な領域となり、サイトオーナーが自分で対処するのは中々難しいのが実情です。
一方、簡単に確認するためのプラグインを使ってまずは簡単な範囲を自分で確認する方法もあります。これにより、どの程度遅いのか、何が原因で遅くなっているのかなどをサイトオーナーや担当者が確認することで、部分的な改修なのかサイトリニューアルがいいか、サーバーの変更なのかPHPやデータベースのアップグレードなのか、といったように進むべき方向のヒントを得られる可能性があります。
今回は、パフォーマンス確認・改善のためにプラグインを一時的に導入し、表示速度が遅い原因を調査する方法をご紹介します。
目次
WordPressのパフォーマンスをチェックできるプラグイン「Query Monitor」
今回ご紹介するパフォーマンス改善のプラグインはQuery Monitorです。
Query Monitor はデータベースやプラグイン、テーマ、PHPエラー、条件分岐や環境まで、様々な情報を表示してくれるプラグイン。開発者向けと説明に書かれていますが、WordPress のパフォーマンスを改善したい場合に「何が原因で遅くなっているのか」がわかる可能性のある、無料で使える素晴らしいプラグインです。
チェック・検証はテスト環境で実施する
Query Monitorはデバッグ目的のプラグインです。ボトルネックになっているプラグインやテーマなどを見つけるのがパフォーマンス改善にとっては重要なため、本番環境ではなくテスト環境でインストールすることを推奨します。
利用中のテーマや各種プラグインを一時的に無効化してQuery Monitorで確認することで、パフォーマンスがどの程度影響あるかが可視化され、結果的にどのテーマ・プラグインがパフォーマンス低下に影響を与えているのか、がわかります。
これらは本番環境上で行うと正しく画面が表示されなかったり、エラーメッセージが表示されたり等ユーザーに迷惑がかかったりセキュリティ上重要な情報が表示されてしまう懸念があるため、本番環境上での実施ではなく、テスト環境で実施するようにしましょう。
ただし、本番環境とテスト環境でサーバーが異なる場合や、アクセス負荷がパフォーマンスに影響を与えている場合などは同じような結果にはならないため、その点は注意が必要です。
参考: WordPressのテストサイト・検証用環境の作り方
測定を行いたいという場合であれば、本番環境にインストールしても問題有りません。ただし、問題を抱えているテーマや他のプラグインと衝突してしまい、画面が崩れるエラーが発生したケースもあるため、いずれにしてもテスト環境で確認してからインストールすることをお勧めします。
Query Monitorで見るべき2つポイント
色々な情報がわかる秀逸なプラグインな一方で、「どこから見たらいいのかわからない」となることも多いはず。そのため、担当者レベルに限定して解説します。
WordPressが遅い場合にQuery Monitorプラグインで見るべき箇所は主に以下です。
- ページ生成時間、メモリ使用量、データベースクエリ
- コンポーネントごとのクエリ
順に見ていきましょう。
ページ生成時間、メモリ使用量、データベースクエリ
Query Monitor プラグインをインストール後、有効化します。すると、WordPressアドミンバー(ログイン時に表示される上部のバー)にQuery Monitorに関する情報が表示されるようになります。
これが何を意味しているかというと、
- ページ生成時間
- 最大メモリ使用量
- データベース読み込み時間
- データベースクエリ数
の4つを示しています。上の画像の場合だと、このようになります。
- ページ生成時間: 0.35s(0.35秒)
- 最大メモリ使用量: 14.2MB
- データベース読み込み時間: 0.03s(0.03秒)
- データベースクエリ数: 80クエリ
この情報から、生成時間にどのくらいの時間がかかっているのか、メモリ使用量は多いか少ないか、データベースの読み込み時間とリクエストの数はどの程度なのかを把握します。
詳細情報を表示し、何が理由で表示速度が低下しているのかを把握する
さらにこの情報を深掘りするには、アドミンバーのQuery Monitor情報部分をクリックすることで、より多くの情報が表示されます。
表示直後は「概要」が表示され、アドミンバーに表示されていた指標をより細かく確認することができます。
最大メモリ使用量はサーバーで設定されている内の何%を占めているのか、データベースのリクエストの内訳はなにか、といった情報がわかります。
これにより、メモリのリソースが足りていないのか、データベースへのリクエスト数が多く高負荷状態になっているのかといった理由から表示速度が遅くなっているなどの原因が分かる可能性があります。
メモリのリソースを使用してしまっている場合、メモリを利用している原因を探したり、設定値を引き上げたりといった次のアクションが生まれます。また、データベースのリクエスト数が多い場合は同様にその原因を探すアクションが取れますね。
この例だと、最大メモリ使用量は設定値である256MBの内、5.6%に相当する14.2MBしか使っていないということと、データベースリクエストは80クエリ程度発生しているものの、読み込み速度は0.03秒未満のため、そこまで時間はかかっていないことがわかり、結果的にページ生成時間は0.35秒とストレスのない表示時間ということが言えます。
コンポーネントごとのクエリ
WordPress の表示速度が低下する一つの要因として、データベースへのリクエスト数が多くなり、メモリ使用量が増えてしまうということが考えられます。そういった場合に、「コンポーネントごとのクエリ」箇所を見ることで解決につながる可能性があります。
Query Monitorの概要を表示している状態から、「データベースクエリー」をクリックし、「コンポーネントごとのクエリー」をクリックすることで表示されます。
コンポーネントごとのクエリーは、WordPress本体やプラグイン、テーマといったコンポーネントごとに、何がどの程度データベースへのリクエスト数や種類を実行しているのか、さらにそれにかかっている時間がわかります。
基本的にはリクエスト数が多い順に時間がかかるため、何がボトルネックでデータベースへのリクエストが多くなっているのかが一目瞭然です。
ページ切り替わり時に異様に遅いといった場合、データベースへのリクエスト数が多く発生しているプラグインやテーマ等が存在していることが多いです。
動きが重い原因を突き止め、リクエストが発生しなかった場合のパフォーマンスをチェックする
以前、重いWordPressがあり相談され内部を確認してみると、数百の後半程度データベースクエリが発生していました。クエリの内8割を2つのプラグインで占めていたため、一時的に2つのプラグインを停止した結果、データベース読み込み時間は80%、ページ表示時間は32%改善しました。ちなみに、1つのプラグインは数年前に更新が停止されメンテナンスされていないプラグイン、もう一方は停止してもウェブサイトの稼働には影響の与えないプラグインでした。
この事例のように、リクエスト数が多い原因がわかった後、もしリクエスト数が発生しなかったらどの程度のパフォーマンスなのかというのを一時的にチェックすることで、どのくらい改善するかが把握できます。
プラグインに原因がないのにページ表示が遅い場合は別の原因を疑う
以前こんな例もありました。特定のページパフォーマンスを測るためQuery Monitorで確認したところ、約800あるクエリの内700クエリ以上をテーマで占めていました。
独自テーマで構築されているWordPressで、このテーマ内にはページに全投稿を表示させるための条件分岐が書かれており、それが原因でした。
このようにコンポーネントごとのクエリーを利用することで、何が原因で表示速度に影響を与えているのかがわかり、改善へのきっかけになります。
機能追加時はパフォーマンスと天秤にかけて判断を
以上、Query Monitor を使ったパフォーマンス確認方法のご紹介でした。
ご存知のようにWordPressはプラグインをインストールすることで機能拡張が可能です。また、テーマには多くの機能が搭載されているものもあります。
どのテーマを採用して、何のプラグインをインストールするかは完全に自由ではありますが、不必要な機能があれこれ付けられたWordPressのパフォーマンスは果たして良好と言えるでしょうか?
すべての機能を「絶対に必要な機能(マスト要件)」「あればいい機能(ウォンツ要件)」に洗い出し、ウォンツ要件を構成しているプラグイン・テーマに関しては削除したり整理することで、パフォーマンスは改善されます。
改修時においても同様で、「この機能を追加することでどの程度パフォーマンスに影響があるか」と考え、最低限必要な機能に絞ることが表示速度を保つWordPressを運用することに繋がります。
改修時や機能追加の検討タイミングになると、人はどうしてもあれも欲しいこれも欲しいとなりがちです。パフォーマンスの観点からもマスト要件だけに絞ることの重要性を伝え、必要あれば機能を追加したいという場や関係者を抑制することで、「異様に表示速度が遅くなってしまった」という事態を避けることに繋がります。
Query Monitorは機能が多すぎてまだまだ使いこなせてないので、「こんな機能もあるよ!」というのがあればぜひコメントをお寄せください。
追記: 別のプラグイン Code Profiler を利用した解析方法を追加しました。
WordPressが遅いと感じた時は内部をチェック – Code Profiler編
コメントを残す