Nextcloudを高速化するOPcacheとAPCuの違いをわかりやすく解説

Nextcloudを高速化するOPcacheとAPCuの違いをわかりやすく解説

Nextcloud の管理画面を見ていると、PHP の OPcacheAPCu に関する警告が表示されることがあります。

たとえば次のような内容です。

  • 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メモリ制限

このあたりを整えるだけで非常に快適になります。