速さの理由を知る。安全の仕組みを知る。WordPress運用の「なぜ?」を解く技術コラム。
kusanagi fcache で超高速 CMS 実行環境を実現する
This entry is part 14 of 17 in the series KUSANAGI開発メンバーのKUSANAGIコマンド解説

kusanagi fcache で超高速 CMS 実行環境を実現する

片倉洋一

今回紹介するのは kusanagi fcache コマンドです。

そもそも fcache とは KUSANAGI 上では nginx の FastCGI キャッシュ機能のことを指します。

FastCGI とは、サーバー上でプログラム( PHP など)で動的にページを作成する仕組みのことです。
つまり、 FastCGI キャッシュとは FastCGI で作成されたページをキャッシュとして保存しておき、次に読み込まれた際にまた動的に作るのではなく、既に作られて保存されたページを表示する仕組みです。
簡単な図で示すと以下のようになります。

当然ですが、静的コンテンツ(画像、スクリプトファイルなど)はキャッシュされません。

なお、KUSANAGI に搭載されている Web サーバーは nginx と Apache の2つがありますが、 fcache の機能は nginx のみ利用できるので注意してください。

KUSANAGI のキャッシュ機能には他にも bcache や、先日追加されたテーマアクセラレーターがあります。
テーマアクセラレーターについては、先日コラムにも載りましたのであわせて読みますと、より理解が深まると思います。
KUSANAGIプラグインの「テーマアクセラレーター」の紹介 – KUSANAGI Tech Column

それでは kusanagi fcache コマンドでできることを一つずつ見ていきましょう。

fcache 機能の状態を確認

対象のプロファイルの fcache 機能が有効かどうかを確認するためには、kusanagi fcache status を使用します。

KUSANAGI 9 全般の話ですが、プロファイルの指定にはコマンドの最後にプロファイル名を指定するか、対象のプロファイルのディレクトリ( /home/kusanagi/(プロファイル名) のディレクトリ)に移動してからコマンドを実行してください。

# kusanagi fcache status (プロファイル名)
fcache is off.
fcache completed.
#

上記の例では、 fcache is off. と表示されていますので、fcache が無効であることが確認できました。
有効な時は fcache is on. と表示されます。

fcache 機能の有効化

対象のプロファイルに対して fcache 機能を有効化するには、 kusanagi fcache on を使用します。

# kusanagi fcache on (プロファイル名)
Turning fcache on.
reload completed.
fcache completed.
#

これにより対象プロファイルに対して fcache 機能が有効になります。

fcache 機能の無効化

対象のプロファイルに対して fcache 機能を無効化するには、 kusanagi fcache off を使用します。

# kusanagi fcache off (プロファイル名)
Turning fcache off.
reload completed.
fcache completed.
#

これにより対象プロファイルに対して fcache 機能が無効になります。

fcache 機能でキャッシュされているファイルのクリア

対象のプロファイル配下でキャッシュされているファイルをクリアするには、 kusanagi fcache clear を使用します。

# kusanagi fcache clear (プロファイル名)
Clearing fcache.
fcache clear completed.
fcache completed.
#

上の例では、対象のプロファイルで設定されている FQDN 配下の全てのキャッシュを削除します。

もし、FQDN 配下の全てのキャッシュではなく、FQDN 配下の特定ページ内のキャッシュだけを削除したい場合は、 --path オプションを使用します。

# kusanagi fcache clear --path /page (プロファイル名)
Clearing fcache.
SUCCESS: smart:GET:http://(FQDN)/page/ cache was deleted.
SUCCESS: pc:GET:http://(FQDN)/page/ cache was deleted.
fcache clear completed.
fcache completed.
#

上の例では、http://(FQDN)/page 配下のキャッシュを削除します。
--path/page/page2 という値を渡せば http://(FQDN)/page/page2 とより狭い範囲のキャッシュを削除することができます。

kusanagi fcache コマンドでできることは以上になります。

fcache 機能の特徴

KUSANAGI の fcache の機能にはいくつか特徴があります。

表示先環境によってキャッシュを分けている

先ほどの kusanagi fcache clear のところで --path を指定してキャッシュをクリアした際に、 SUCCESS に続く言葉として smart:pc: と表示されています。
これは User-Agent の情報から表示先が PC かタブレット、スマートフォンかを判断し、自動的にキャッシュされるファイルを分けているためです。

POST 時や WordPress にログインしている場合などは、キャッシュを使用しない

POST した場合や URL にクエリストリング( URL の末尾の ? に続く文字 )が含まれている場合、WordPress にログインしている場合はキャッシュは使用せず、必ず動的に生成されたページを表示するようにしています。

キャッシュの有効期間は 10 分

キャッシュの有効期間は 10 分となっています。
10 分すぎるとキャッシュは自動的に破棄されます。

fcache 機能を有効にした場合の効果

fcache を有効化した際の効果のほどは弊社 kusanagi.tokyo に記載があります。
以下に引用します。

KUSANAGI 9では、一般的なクラウド環境 (*3) においてページキャッシュ利用時に1秒あたりの同時リクエスト数約25,000超 (HTTP時) 、ページキャッシュ非使用時に1秒あたりの同時リクエスト数約210超 (HTTP/HTTPSとも) を実現します。

また、標準のLAMP環境 (*2) と比べ、ページキャッシュ使用時に約2,330倍の、ページキャッシュ非使用時に約20倍の高速化を実現します。

*2: Microsoft Azure Standard D4as_v4インスタンス (2.35Ghz AMD EPYC 7452 プロセッサ 4 vCPU, 16GiB), Premium SSD LRS, 東日本リージョン, CentOS 7.9.2009, PHP 5.6.40, Apache 2.4.6, MariaDB 5.5.68, WordPress 5.8.2 で計測

*3: Microsoft Azure Standard D4as_v4インスタンス (2.35Ghz AMD EPYC 7452 プロセッサ 4 vCPU, 16GiB), Premium SSD LRS, 東日本リージョン, KUSANAGI 9.1.0-1, PHP 7.4.27, Nginx 1.21.4, MariaDB 10.5.13, WordPress 5.8.2 で計測

kusanagi.tokyo より KUSANAGIとは

このように、標準的な LAMP 環境と比べて、 fcache (ページキャッシュ)使用時には約2,330倍という高い効果を得られることが分かっています。

KUSANAGI の超高速 CMS 実行環境を実現するには必須の機能ですので、皆様ぜひとも活用してみてください。

KUSANAGI 9 コマンドのマニュアル

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解