Nextcloud の警告「メモリキャッシュが設定されていません。」

2024-03-22

「メモリキャッシュが設定されていません。」の警告(memcache)

Nextcloud で「概要」→「セキュリティ&セットアップ警告」を確認すると、警告メッセージが表示されてました。
メモリキャッシュが有効になっていない場合や、ファイルロックが有効になっていない場合は、以下のメッセージの警告が表示されます

# メモリキャッシュが設定されていない場合
メモリキャッシュが設定されていません。可能であれば、パフォーマンスを向上するため、memcacheを設定してください。
より詳しい情報はドキュメントで参照できます。

# トランザクションファイルロックの設定されていない場合
データベースがトランザクションファイルロックに使われています。パフォーマンスをあげるには、可能であればメモリーのキャッシュを設定してください。 詳細については、ドキュメント↗を参照してください。

memcache 等が設定されていない警告なので「memcache」をインストールして設定していきます

memcacheのインストール

memcached をdnf でインストールします。RHEL9系だと「libmemcached」が無いので「libmemcached-awesome」をインストールします

# memcached をインストール
$ sudo dnf install memcached libmemcached

# RHEL9系だと「libmemcached」が無いので「libmemcached-awesome」をインストールします
$ sudo dnf install memcached libmemcached-awesome

コードやオブジェクトをキャッシュできる「OPcache」、「APCu」もインストールします。

  • OPCache(Opcode Cache)は、PHPのソースをリクエストごとに読みに行かず、コンパイルしたものをメモリから読み込んで実行するキャッシュ機能です。
  • APCu(Alternative PHP Cache)は、変数の結果をメモリ上にキャッシュする機能で、主にデータのキャッシュに焦点を当てており、特にデータベースクエリの結果や計算結果など、頻繁にアクセスされるデータのキャッシュに利用されます。
# OPcacheとAPCu をインストール
$ sudo dnf install php-opcache php-pecl-apcu

# OPcacheがインストールされているか確認します
$ php -v
PHP 8.0.10 (cli) (built: Aug 24 2021 15:40:40) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.10, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.10, Copyright (c), by Zend Technologies

memcacheの設定

memcacheの設定は、nextcloudがあるディレクトリ内の設定ファイル(config.php)で memcacheを有効にします

$ sudo vim /var/www/html/nextcloud/config/config.php
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcache.locking' => '\OC\Memcache\Memcached',

opcacheの設定は、「/etc/php.d/10-opcache.ini」でおこなうので、下記のように設定します

$ sudo vim /etc/php.d/10-opcache.ini
opcache.enable=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

APCuの設定は、「/etc/php.d/40-apcu.ini」でおこなうので、下記のように設定します

$ sudo vim /etc/php.d/40-apcu.ini
[apcu]
apc.enabled=1
apc.shm_size=32M
apc.ttl=7200
apc.enable_cli=1
apc.serializer=php

# apcuが有効になっているか確認します、「APCu Support」が「Enabled」になっていると確認します
$ php -i | grep -i apcu
/etc/php.d/40-apcu.ini
apcu
APCu Support => Enabled
APCu Debugging => Disabled

設定を変更したら、Apache, php-fpm の再起動して設定を読み直します

$ sudo systemctl restart php-fpm
$ sudo systemctl restart httpd

APCu の設定をおこなっていないと下記のように、「occ」を実行するとエラーになります。
下記のエラーの場合は、APCu は有効になっていないので、「/etc/php.d/40-apcu.ini」の設定を変更してAPCu を有効にします

# sudo -u apache php /var/www/html/nextcloud/occ
An unhandled exception has been thrown:
OCP\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)

 

 

 

 

 

スポンサーリンク

0
0