Nextcloudを高速化するOPcacheとAPCuの違いをわかりやすく解説
Nextcloud の管理画面を見ていると、PHP の OPcache や APCu に関する警告が表示されることがあります。
たとえば次のような内容です。
- OPcache の
interned_strings_bufferが不足している - メモリキャッシュが設定されていない
- APCu が有効ではない
このあたりは「名前は聞いたことがあるけれど、何が違うのかわかりにくい」と感じやすいポイントです。
この記事では、Nextcloud を快適に動かすうえで重要な OPcache と APCu の違いを、初心者にもわかりやすく整理します。
OPcacheとは?
OPcache は、PHPコードそのものを高速化する仕組みです。
通常 PHP は、アクセスのたびに以下を繰り返します。
① PHPファイルを読み込む
② コードを解析する
③ 実行用バイトコードに変換する
④ 実行する
この「②と③」が毎回発生すると、CPU に負荷がかかります。
そこで OPcache を使うと、最初にコンパイルした結果をメモリに保存し、次回以降は再利用できます。
1回目:コンパイルして保存
2回目以降:メモリから即実行
つまり、
PHPプログラムを毎回作り直さず、完成品を使い回す仕組み
です。
APCuとは?
APCu は、PHPコードではなくデータをキャッシュする仕組みです。
たとえば Nextcloud では、以下のような情報を何度も使います。
- ユーザー情報
- ファイル一覧
- 設定値
- アプリ情報
- セッション関連データ
これらを毎回データベースから読み込むと遅くなります。
APCu を使うと、一度取得した結果をメモリに保存し、次回はそこから取り出せます。
DBから取得 → APCuに保存 → 次回はメモリから利用
つまり、
よく使う処理結果をメモリに保存して使い回す仕組み
です。
OPcacheとAPCuの違い
| 項目 | OPcache | APCu |
|---|---|---|
| キャッシュ対象 | PHPコード | データ・変数 |
| 主な効果 | PHP実行高速化 | DBアクセス削減 |
| 負荷削減 | CPU | DB・I/O |
| Nextcloudでの役割 | 基盤高速化 | アプリ高速化 |
| 必須度 | 必須 | ほぼ必須 |
ポイントは次の1行です。
OPcache はコード用、APCu はデータ用
この違いを覚えておけば十分です。
Nextcloudでは両方が重要
Nextcloud は PHP ファイル数も多く、内部で大量の設定値やファイルメタ情報を扱います。
そのため、実運用では次の組み合わせが非常に重要です。
- OPcache:PHP処理を高速化
- APCu:Nextcloud内部データを高速化
この2つがそろうことで、
- ページ表示が速い
- CPU負荷が下がる
- DB負荷が減る
- 管理画面の警告が減る
といった効果が期待できます。
自宅サーバーならAPCuだけで十分
単一サーバーで Nextcloud を運用している場合は、まず APCu を有効にすれば十分です。
config.php に以下を設定します。
'memcache.local' => '\\OC\\Memcache\\APCu',
設定ファイルは通常こちらです。
/var/www/nextcloud/config/config.php
将来的にはRedisもおすすめ
利用者が増えたり、ファイルロックを安定させたい場合は Redis を併用します。
'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.locking' => '\\OC\\Memcache\\Redis',
特に大きなファイルを扱う環境では Redis の恩恵が大きくなります。
まとめ
最後に整理すると次の通りです。
- OPcache = PHPコードの高速化
- APCu = データの高速化
- Nextcloud では 両方とも重要
- 自宅サーバーなら APCu をまず有効化
- 将来は Redis 併用でさらに安定
Nextcloud の警告は「問題」というより、
より快適に動かすためのチューニングヒント
であることが多いです。
今回のように OPcache と APCu の違いを理解しておくと、警告の意味がかなりわかりやすくなります。
おわりに
Nextcloud は少しチューニングするだけで、体感速度がかなり変わります。
特に Ubuntu 24.04 + Apache + PHP 8.3 環境では、
- OPcache
- APCu
- Redis
- PHPメモリ制限
このあたりを整えるだけで非常に快適になります。