タグ: php

Nectcloud recognizeアプリ導入後のOPcacheの設定。

発生した事象

Nextcloudにアップロードされた画像をタグ付けしてくれる「recognize」アプリを使っています。

それを用いて運用したところ、以下のエラーに出くわしました。

発生画面

メニュー > Administration settings > 概要

  • PHP OPcacheモジュールが正しく設定されていません。詳細はドキュメントを参照してください。
    • 「OPcacheのインターン文字列バッファーがまもなく一杯になります。全てのスクリプトをキャッシュに保管できるようにするには、opcahe,interned_strings_bufferの値を8より多い値で、PHP設定に適用することを推奨します。

これを放置していったところ、Webサービスが止まり、SSHにも接続できなくなりました。そのため、以下の対処を施しました。

前提:環境

以下の環境で動いています。

  • Ubuntu 20.04
  • Apache 2.4.54
  • PHP 7.4.32

※snapは使わず、オンプレで構築しました。

また、Opcacheモジュールは設定済みです。

対処

以下、管理者権限で実施しています。

mkdir /etc/old
cd /etc/php/7.4/mods-available
cp -pi opcache.ini /etc/old/opcache.ini.`date +%Y%m%d`
vi opcache.ini
設定内容
opcache.interned_strings_buffer=16
; 8 → 16に修正

設定反映

apache2ctl configtest
# Syntax OK を確認します
systemctl restart apache2

反映確認

メニュー > Administration settings > 概要

へと進みます。

「全てのチェックに合格しました。」

を確認します。

余談:recognizeアプリの注意点

万単位のファイルを既にインポートしたため、画像認識とタグ付けのためにかなりのCPUリソースを消費します。(平均オーバーロードが7を超えるときもありました)
そのため、zabbix等で負荷を監視している場合は認識中は閾値を上げておく等の対処が必要です。

PHPの再インストール。(混在環境の改善)

こちらの続きです。

  • システム内にPHP 7.4と8.1が混在
  • 一部をアップグレード対応しても満足に動かない

パターンがあったので、完全削除を対応しました。

手順

PHPの完全削除

apt-get --purge autoremove php*

これにより、設定ファイルを含めてPHPが削除されました。

PHP7.4インストール

add-apt-repository ppa:ondrej/php
aptitude update
aptitude upgrade

apt install php7.4

apt install php7.4-{opcache,pdo,bcmath,calendar,ctype,fileinfo,ftp,gd,intl,json,ldap,mbstring,mysqli,posix,readline,sockets,bz2,tokenizer,zip,curl,iconv,phar,xml}


設定反映

systemctl restart apache2

その後、正常に上がっていることを確認。

[--purge]オプションで完全に削除するのを失念していました。

Powered by WordPress & Theme by Anders Norén