APCu Managerを使ってみた記録|WordPressのオブジェクトキャッシュ運用メモ

Maintenance-query-generation
  • URLをコピーしました!

WordPressの表示速度を見直すときは、画像の圧縮、テーマの高速化設定、ページキャッシュなど、目に見えやすい部分から確認することが多くなります。

ミコトホドでも、Cocoonを使っていたころにサイトのもっさりした動作が気になり、複数の高速化設定を試していました。

その中で使ったのが、WordPress管理画面からAPCuの状態を確認し、永続オブジェクトキャッシュを管理できるAPCu Managerです。

この記事では、APCu Managerを実際に使った記録として、分析画面で確認した項目、キャッシュを削除する場面、当時試したphp.iniの設定をまとめます。

APCu Managerを利用するには、サーバー側でAPCuが使える環境が必要です。APCuの利用可否や設定変更の方法はサーバーによって異なります。

目次

APCu Managerでできること

APCu Managerは、WordPress管理画面からAPCuの統計情報を確認し、キャッシュを管理できるプラグインです。

APCuは、PHPの変数をサーバーのメモリ上へ一時的に保存する仕組みです。一度取得・生成したデータをメモリから再利用できれば、同じ処理やデータベースへの問い合わせを繰り返す回数を減らせます。

WordPressにもオブジェクトキャッシュの仕組みはありますが、標準状態では、保存されたデータは基本的に一回のリクエストが終わるまでしか保持されません。

APCu Managerの永続オブジェクトキャッシュを有効にすると、APCuを保存先として使い、リクエストをまたいでキャッシュを再利用できる構成になります。

これは、完成したHTMLページを保存するページキャッシュとは異なります。WordPressがページを生成する途中で扱うデータを保存し、データベースへの問い合わせなどを減らすための仕組みです。

ページキャッシュが「完成した料理を保存しておく仕組み」なら、オブジェクトキャッシュは「調理中によく使う材料を手元に置いておく仕組み」と考えると、役割の違いを整理しやすくなります。

APCu Managerは、導入するだけで必ずサイトを高速化するプラグインではありません。APCuの使用状況を確認し、WordPressの永続オブジェクトキャッシュとして運用するためのプラグインです。

APCu Managerの分析画面で確認した項目

APCu Managerを有効化すると、WordPress管理画面からAPCuの使用状況を確認できます。

APCu Managerの分析画面

当時は、主にヒット率、空きメモリ、保存されているオブジェクト数、フラグメンテーションを確認していました。

ひとつの数値だけで良し悪しを決めるのではなく、複数の項目とサイトの動作をあわせて見る必要があります。

ヒット率

ヒット率は、要求されたデータがAPCu内にあり、保存済みのデータを再利用できた割合を見るための項目です。

ヒット率が高ければ、キャッシュ内のデータを再利用できていると判断できます。一方で、サイトを開いた直後、キャッシュを削除した直後、アクセスが少ない状態では数値が安定しません。

特定の数値を常に目指すというより、通常運用時の変化を見るための目安として使っていました。

空きメモリ

空きメモリは、APCuに割り当てられた共有メモリのうち、使用されていない容量を示します。

空き容量が少ないことだけで、直ちに異常とは判断できません。ただし、空きメモリがほとんどない状態が続き、保存したデータが頻繁に追い出されている場合は、割り当て容量が不足している可能性があります。

オブジェクト数

オブジェクト数は、APCu内に保存されているキャッシュデータの件数です。

保存数が多いこと自体は問題ではありません。使用メモリ、空きメモリ、ヒット率などとあわせて、どの程度キャッシュが利用されているかを確認します。

フラグメンテーション

フラグメンテーションは、APCuに割り当てられたメモリ内の空き領域が、どの程度細かく分かれているかを見るための項目です。

データの保存と削除が繰り返されると、空き容量の合計は残っていても、連続した大きな空き領域を確保しにくくなることがあります。

数値が一時的に高くなっただけでキャッシュを削除するのではなく、空きメモリやサイトの動作も確認して判断します。

分析画面では、ヒット率だけを見て効果を判断するのではなく、空きメモリ、オブジェクト数、フラグメンテーション、サイトの動作をまとめて確認します。

APCu Managerの設定画面で確認したこと

APCu Managerには、APCuの管理やWordPressの永続オブジェクトキャッシュに関する設定画面があります。

APCu Managerの設定画面

ミコトホドでは、設定内容と分析画面を確認しながら使い、意味を把握できていない項目は変更しないようにしていました。

キャッシュ機能は、多く有効にすれば速くなるものではありません。ページキャッシュ、ブラウザキャッシュ、サーバー側キャッシュ、オブジェクトキャッシュでは、それぞれ保存する対象と役割が異なります。

APCu Managerを使うときも、現在どのキャッシュ機能が動いているかを整理したうえで、必要な機能だけを有効にすることが重要です。

APCu Managerは、すべての設定を変更するためのものではありません。現在の状態を確認し、問題や不足が見つかった項目だけを調整する使い方が基本です。

オブジェクトキャッシュを削除した場面

APCu Managerでは、APCu内に保存されているキャッシュを削除できます。

キャッシュは再利用するために保存されているため、問題がない状態で定期的に削除する必要はありません。

当時は、次のような場面で削除を検討していました。

  • テーマやプラグインの大きな変更後に、不整合が疑われるとき
  • 更新したデータが正しく取得されず、オブジェクトキャッシュの影響を切り分けたいとき
  • プラグインの停止や削除後に、関連するキャッシュを残したくないとき
  • APCuの設定変更後に、状態をいったんリセットして確認したいとき
  • 空きメモリやフラグメンテーションに問題があり、キャッシュを作り直して経過を確認したいとき

APCuのキャッシュを削除しても、WordPressの記事、画像、データベース内の情報が削除されるわけではありません。APCuのメモリ上に保存されていた一時データが削除され、必要になったデータから再び保存されます。

削除直後はキャッシュがないため、最初のアクセスではデータの取得や生成がやり直されます。そのため、一時的に処理時間が増える可能性があります。

削除後は、サイトと管理画面の主要なページを開き、正常に動作していることを確認しました。その後、APCu Managerの分析画面を再度確認すると、アクセスに応じてオブジェクト数やヒット数が増えていく様子も確認できます。

オブジェクトキャッシュの削除は、表示不具合の原因を切り分ける手段のひとつです。ページキャッシュやブラウザキャッシュとは対象が異なるため、古いページ表示が残っているだけなら、先に別のキャッシュを確認します。

当時php.iniで試したAPCu設定

APCuのメモリ量やキャッシュの有効時間などは、サーバー側のphp.iniで調整できる場合があります。

ミコトホドでは、当時の環境で次の設定を試していました。

apc.enabled=1
apc.shm_size=64M
apc.entries_hint=8192
apc.ttl=3600
apc.gc_ttl=3600

これは、すべてのWordPressサイトに適した推奨設定ではありません。ミコトホドで当時試した設定の記録です。

apc.enabled

apc.enabledは、APCuを有効にするための設定です。

ただし、設定ファイルへ記述できても、サーバー側にAPCu拡張機能が導入されていなければ利用できません。

apc.shm_size

apc.shm_sizeは、APCuへ割り当てる共有メモリの容量です。当時は64Mを指定していました。

容量が少なすぎると、必要なキャッシュを保持できず、保存済みのデータが追い出されやすくなります。一方で、必要以上に大きな値を指定しても、それだけで処理が速くなるわけではありません。

分析画面の使用量や空きメモリを確認し、必要がある場合に調整する項目です。

apc.entries_hint

apc.entries_hintは、APCuに保存されるエントリー数の目安を指定する設定です。

実際に保存できる件数を固定する設定ではありません。想定されるキャッシュ数に応じて、APCuが内部構造を準備するための目安として使われます。

apc.ttlとapc.gc_ttl

apc.ttlは、明示的な有効期限が設定されていないキャッシュをメモリ上へ保持する時間に関係する項目です。

apc.gc_ttlは、有効期限が切れたデータが削除されるまでの猶予時間に関係します。

これらの値も、大きくすればよいわけではありません。サイトやプラグインが保存するデータの性質、割り当てメモリ、更新頻度を考慮する必要があります。

php.iniはPHP全体の動作に関係する設定ファイルです。利用中のサーバーによって、変更できる項目、設定ファイルの場所、反映方法が異なります。現在の設定を控え、元に戻せる状態で作業してください。

php.iniを変更しても反映されない場合がある

php.iniへAPCuの設定を追加しても、使用しているサーバーによっては変更が反映されない場合があります。

  • サーバーにAPCu拡張機能が導入されていない
  • 利用者によるAPCu設定の変更が許可されていない
  • 編集したphp.iniが対象サイトで読み込まれていない
  • 設定の反映にPHPプロセスやサーバーの再起動が必要
  • サーバー独自の管理画面から設定する必要がある

設定を変更したあとは、APCu Managerの画面などで、指定したメモリ量や設定が実際に反映されているかを確認します。

反映されない場合は、設定値を追加し続けるのではなく、利用しているサーバーの仕様を確認する必要があります。

APCu Managerを使って分かったこと

APCu Managerを使ったことで、ページキャッシュとオブジェクトキャッシュは別の仕組みであることを、管理画面の数値を見ながら確認できました。

画像圧縮やページキャッシュは、ブラウザへ送るデータや完成したページの再利用に関係します。一方、オブジェクトキャッシュは、WordPressがページを生成するときに扱うデータの再利用に関係します。

そのため、APCu Managerを導入した結果を、見た目の表示速度だけで判断するのは難しいと感じました。アクセス数、データベースへの問い合わせ、管理画面の処理、使用しているテーマやプラグインによって効果は変わります。

ミコトホドでは、Cocoonを使っていた時期にAPCu Managerを試しました。現在はSWELLへ移行していますが、このときにキャッシュの種類と役割を分けて考えた経験は、その後のWordPress運営にも役立っています。

APCu Managerは、導入するだけで問題を解決する高速化プラグインではありません。APCuの使用状況を確認し、WordPressの永続オブジェクトキャッシュを管理するためのプラグインです。

APCu Managerが向いている環境

APCu Managerは、次の条件に当てはまる環境で検討しやすいプラグインです。

  • サーバー側でAPCuが利用できる
  • WordPressで永続オブジェクトキャッシュを使いたい
  • APCuのヒット率やメモリ使用量を管理画面から確認したい
  • APCuの状態を見ながら設定を調整できる

反対に、APCuが利用できないサーバーや、サーバー設定を確認できない環境では使えません。

すでにRedisやMemcachedなど、別の永続オブジェクトキャッシュを使用している場合も、役割が重なるため、APCu Managerを追加する前に現在の構成を確認する必要があります。

まとめ|APCu Managerは状態を確認しながら運用する

APCu Managerは、WordPress管理画面からAPCuの統計情報を確認し、永続オブジェクトキャッシュを管理できるプラグインです。

実際に使ったときは、ヒット率だけではなく、空きメモリ、オブジェクト数、フラグメンテーションをあわせて確認していました。

  • APCuは、PHPの変数をメモリ上へ保存する仕組み
  • APCu Managerは、APCuの統計情報とキャッシュを管理できる
  • 永続オブジェクトキャッシュは、ページキャッシュとは役割が異なる
  • キャッシュは、問題がない状態で定期的に削除する必要はない
  • php.iniの設定値は、環境と使用状況に合わせて判断する
  • APCuを利用できないサーバーでは使用できない

APCu Managerを導入すれば、すべてのWordPressサイトが同じように速くなるわけではありません。

APCuを利用できる環境で、オブジェクトキャッシュの状態を数値で確認しながら運用したい場合に検討できるプラグインです。

  • URLをコピーしました!

コメント

コメントする

目次