ownCloud 10で「PHPメモリ制限が推奨値以下」という問題を修正

求める結果は単に「警告が消えた」ということではありません。適切な修正とは、実際にownCloud 10を動作させているPHPプロセスが少なくとも512MBのメモリ制限を報告し、ownCloud管理画面の警告が解消され、スケジュールされたジョブやCLIジョブも適切な制限を使用し、ホストにはPHP、Webサーバー、データベース、バックグラウンドジョブを重いスワッピングなしで実行できるだけの十分な物理メモリが残っている状態を指します。

ownCloud Classic 10.16 の場合、公式の Docker 環境では、OWNCLOUD_MEMORY_LIMIT=512Mが推奨されるデフォルトとして使用されます。ownCloud のドキュメントでは、Web サーバーで使用される PHP 設定と、で使用される設定を区別していますphp-cli。この区別が、管理者がを変更してサービスを再起動しても、同じ警告が表示されることがある主な理由ですmemory_limit。

このガイドでは、まず影響の少ないチェックから始め、次にApache、PHP-FPM、CLI、Dockerのパスを示します。また、制限をさらに引き上げるべき場合と、PHPの設定自体ではなくホストのRAM不足が本当の問題である場合についても説明します。

成功とはどのようなものか

チェック良い結果失敗した場合
ownCloud管理者概要「PHPメモリ制限が推奨値以下」という警告は表示されません。PHPの設定ファイルを誤って編集したか、正しいサービスを再起動しなかった可能性があります。
Web PHP ランタイムmemory_limit512M以上を表示Webリクエストで使用されているロード済み設定ファイルを見つけてください。
CLI / cron ランタイムphp -r 'echo ini_get("memory_limit");'意図した値を示しますCLI固有の設定php.iniも編集してください。
ホストメモリ十分なRAM容量があり、スワップ負荷はほとんど、あるいは全くない。PHPの制限値をむやみに増やし続けないでください。PHPワーカー数やホストのサイジングを見直してください。
ログ「許可されたメモリサイズが超過しました」というエラーは繰り返し発生しません。メモリ制限を再度引き上げる前に、メモリを消費しているワークロードを特定してください。

1. 警告とownCloudが認識する値を確認します。

ownCloud 10 管理者概要画面に、PHP メモリ制限が推奨値と 128 MB の制限を下回っているという警告が表示されています。
ownCloud自体が認識できる値から始めてください。128MBまたは256MBのWebランタイム制限は、ownCloudが推奨するDocker構成で使用される512MBの値よりも低くなっています。

ownCloudの管理設定を開き、メモリ制限の警告を確認してください。変更を加える前に、ownCloudのバージョン、PHPのバージョン、Webサーバーの種類、および現在のメモリ制限を記録しておきましょう。これにより基準値が得られ、複数のPHPバージョンがインストールされているシステムで誤ったPHPインストールを変更してしまうことを防ぐことができます。

ownCloudの最新版10.16のドキュメントによると、サーバー要件はユーザー数、ファイル数、アクティビティに大きく依存するとのことです。Dockerの設定ではOWNCLOUD_MEMORY_LIMIT=512M、このデフォルト値を維持することを推奨しています。そのため、512MBは警告を解決するための妥当な基準値であり、すべてのワークロードが512MB以内に収まることを保証するものではありません。

公式資料:ownCloudの導入に関する推奨事項およびownCloudのDocker環境変数。

2. CLIの値がWebサーバーを表しているとは限らないので、その値を信用しないでください。

Ubuntuターミナルでphp -iとphp --iniを表示し、CLIメモリ制限を128Mに設定し、CLIのphp.iniパスを表示している。
php --iniPHP CLI の設定を報告します。これは、ownCloud を配信するために Apache または PHP-FPM が使用する PHP 設定とは異なる場合があります。

以下のコマンドを実行して、コマンドラインPHPプロセスが何を使用しているかを確認してください。

php --ini
php -r 'echo ini_get("memory_limit"), PHP_EOL;'

これはcronジョブには便利ですoccが、Webリクエストが何を使用しているかの証明にはなりません。ownCloudは、次のような個別の設定パスを明示的に文書化しています。

/etc/php/<version>/apache2/php.ini
/etc/php/<version>/fpm/php.ini
/etc/php/<version>/cli/php.ini

CLI で 512M と表示されているのに管理ページでエラーが表示される場合は、その不一致は Web サーバーが別のファイルを読み込んでいる強い兆候ですphp.ini。

ownCloudのPHP設定に関する注意事項を参照してください。そこには、PHPの設定を複数のINIファイルで変更する必要がある場合があることが具体的に警告されています。

3. Webリクエストで使用されているPHP設定を見つける

ブラウザのphpinfoページには、読み込まれたPHP-FPM設定ファイルと、CLI設定を表示するターミナルの横に128Mのmemory_limitが表示されています。
ブラウザのPHPランタイムとCLIランタイムを比較してください。ownCloudのWeb警告に関係するのは、ブラウザで読み込まれた設定ファイルです。

最も信頼性の高いテスト方法は、ownCloudを配信しているのと同じWebスタックからPHPを検査することです。ownCloudのドキュメントでは、一時phpinfo.phpページを使用する方法が説明されています。

<?php phpinfo(); ?>

一時的にウェブルートに配置し、ブラウザで開いて、次の場所を探してください。

  • 読み込まれた設定ファイル
  • メモリ制限
  • サーバーAPI

その後、phpinfoファイルを直ちに削除してください。ownCloudは、phpinfoページを公開したままにしておくと、機密性の高いサーバー情報が漏洩する可能性があると警告しています。

ブラウザ/etc/php/7.4/fpm/php.iniに と表示され、 とphp --ini表示される場合/etc/php/7.4/cli/php.ini、CLI ファイルを編集しても警告が解消されなかった理由が正確にわかります。

4. PHP-FPM: ウェブランタイムの制限を512Mに引き上げる

nanoエディタでPHP-FPMのphp.iniファイルを開き、memory_limitを512Mに設定する。
php.iniPHP-FPMを使用するNginxまたはApacheの設定では、 CLIファイルだけでなく、FPMまたは該当するプール/サイトのオーバーライドも変更する必要があります。

一般的なDebianまたはUbuntuのインストール環境では:

sudo nano /etc/php/7.4/fpm/php.ini

探す:

memory_limit = 128M

そして、次のように変更します。

memory_limit = 512M

パスには、インストールされているPHPのバージョンを指定してください。その後、必要に応じて適切なFPMサービスとWebサーバーを再起動してください。

sudo systemctl restart php7.4-fpm
sudo systemctl reload nginx

Apacheproxy_fcgiまたは別のFPM設定の場合は、PHP-FPMを再起動してからApacheをリロードしてください。

ownCloud は、PHP-FPM が から PHP 設定を利用しないことも指摘しています.htaccess。FPM でディレクトリごとの上書きに依存している場合は、適切なphp.ini、プール構成、または など、環境に合わせてサポートされている PHP/FPM 構成メカニズムを使用してください.user.ini。

5. mod_php を使用した Apache: Apache PHP 設定を編集する

NanoエディタでApacheのphp.iniファイル内のmemory_limitが512Mに設定されていることを確認し、その後Apacheの再起動コマンドを実行した。
Apache mod_phpを使用する場合は、Apache固有のPHP設定を編集し、Apacheを再起動して、新しいワーカープロセスが新しい制限を読み込むようにします。

ApacheがPHPをモジュールとして直接ロードする場合は、Apache固有のファイルを編集してください。

sudo nano /etc/php/7.4/apache2/php.ini

セット:

memory_limit = 512M

次にApacheを再起動します。

sudo systemctl restart apache2

バージョン番号を機械的にコピーしないでください。Apache によって実際にロードされたバージョンを確認してください。複数の PHP リリースにわたってアップグレードされたシステムでは、多くの場合、. の下に複数のディレクトリが保持されます/etc/php/。

結果判定基準はシンプルです。再起動後、Webブラウザに公開されているPHPランタイムに新しい値が表示される必要があります。もし128Mのまま表示される場合は、別の設定レイヤーがあなたの編集内容を上書きしていることになります。

6. occまたはcronがメモリをあまり使用しない場合は、CLI制限を更新する。

管理画面の警告はウェブランタイムによって表示されますが、occcronジョブはPHP CLIを使用します。ownCloudのドキュメントにもこの点が明記されています。

編集:

sudo nano /etc/php/7.4/cli/php.ini

セット:

memory_limit = 512M

次に、以下を確認します。

php -r 'echo ini_get("memory_limit"), PHP_EOL;'

CLI PHP の場合、サービスを再起動しなくても問題ありません。CLI の呼び出しごとに新しいプロセスが起動するためです。ただし、cron ジョブが明示的に別の PHP バイナリを呼び出す場合は、/usr/bin/php使用されているバイナリが正しいと仮定するのではなく、そのバイナリが正確に呼び出されていることを確認してください。

ownCloudは、通常Debian/Ubuntu上でoccHTTPユーザーとして実行することを推奨しています。また、公式のoccドキュメントでは、複数のPHPバージョンがインストールされている場合は、Webサーバーと同じPHPバージョンを使用する必要があると警告しています。www-dataocc

7. Docker: コンテナ内のファイルを編集する代わりに、OWNCLOUD_MEMORY_LIMIT を使用してください。

OWNCLOUD_MEMORY_LIMITが512Mに設定され、ownCloudコンテナが再作成されていることを示すDocker Composeファイル
公式のownCloudコンテナの場合は、OWNCLOUD_MEMORY_LIMIT=512Mコンテナ環境内で設定を行い、サービスを再作成して、生成されたPHP構成を更新してください。

公式のownCloud Dockerイメージの場合は、ドキュメントに記載されている環境変数を使用してください。

environment:
  OWNCLOUD_MEMORY_LIMIT: 512M

次に、サービスを再作成します。

docker compose up -d

一時的なコンテナ内で編集して根本的な修正を行わないでくださいphp.ini。コンテナを再作成すると、これらの変更が破棄される可能性があります。ownCloudの公式Docker環境ドキュメントではOWNCLOUD_MEMORY_LIMIT=512M、このデフォルト設定を維持することを推奨しています。

Dockerホスト自体に厳しいメモリ制限がある場合は、コンテナの制約も確認してください。

docker stats

PHPのメモリ制限を512MBに設定しても、コンテナに自動的に512MBの空きメモリが確保されるわけではありません。これは、個々のPHPリクエストが消費できるメモリ量を512MBまでに制限するだけです。コンテナとホストは、同時に実行されるすべてのPHPワーカーやその他のサービスのために、十分なメモリを必要とします。

8. 正しいサービスを再起動し、同じランタイムから検証します。

ターミナルでPHP-FPMとNginxを再起動し、ownCloudの概要画面でPHPのメモリ制限が512MBに設定され、チェックに合格していることが確認できます。
修正が完了したのは、Webランタイムが512M以上を報告し、ownCloudにメモリ不足の警告が表示されなくなった場合のみです。

該当サービスを再起動した後、一時的なphpinfoページまたはownCloud管理画面の概要を再度確認してください。その後、phpinfoページを削除してください。

PHP-FPMを変更した場合は、以下を確認してください。

sudo systemctl status php7.4-fpm
sudo systemctl status nginx

Apacheを変更した場合:

sudo systemctl status apache2

ownCloudの管理ページを更新してください。ownCloudが想定される制限値以上で実行されていれば、警告は消えているはずです。

9. PHPの制限を512M以上に引き上げる前に、ホストのRAMを確認してください。

Ubuntuターミナルに、空きメモリ、PHP-FPMワーカープロセス、および最近のownCloudログエントリを表示
リクエストごとの制限値を引き上げた後は、システム全体のメモリ使用量とPHPワーカーの動作を確認してください。PHPの上限値を高く設定すると、多くのワーカーがアクティブな場合、最悪の場合のRAM消費量が増加する可能性があります。

走る:

free -h
ps aux | grep php-fpm
vmstat 1

PHPのmemory_limitメモリ使用量の上限はスクリプトごとに設定されています。これは予約メモリではなく、サーバーが必要とするRAM容量とも異なります。PHPワーカーが20個あり、すべてのリクエストに非常に大きなメモリ使用量を許可した場合、理論上の最悪のケースでは、マシンのRAM容量を大幅に超過する可能性があります。

ownCloudのチューニングに関するドキュメントでは、Webサーバープロセスに関して同様の一般的な警告が示されています。プロセス数を調整して、メモリ使用量の合計が利用可能なRAMを下回るようにしてください。そうしないと、システムがスワップを開始し、パフォーマンスが低下します。ownCloud Classicのチューニングガイドを参照してください。

512Mの警告が解消され、通常の運用が正常であれば、単に数値を大きくするためだけに制限を引き上げる理由はありません。

10. 512Mでも「許可されたメモリサイズが不足しています」というエラーが表示される場合

推奨事項の警告がクリアされた場合と、メモリ不足によるクラッシュは別の問題です。ログに次のようなメッセージが含まれている場合:

PHP Fatal error: Allowed memory size of ... bytes exhausted

それを引き起こす操作を特定してください。大規模なスキャン、暗号化処理、外部ストレージ操作、画像処理、またはサードパーティ製アプリは、それぞれ大きく異なるメモリプロファイルを持つ可能性があります。

ownCloudのログとPHP/Webサーバーのエラーログを確認してください。標準的なownCloudのインストールでは、設定済みのデータディレクトリ(通常は)に独自のログが書き込まれますdata/owncloud.log。「1Gに増やす」という操作を、自動的に次のステップとして扱うのは避けてください。まず、同じ操作が繰り返し上限に達するかどうかを確認してください。

特定の管理ジョブが正当な理由でより多くのメモリを必要とする場合、すべてのWebリクエストにグローバルに大きな制限値を設定するよりも、対象を絞ったCLIオーバーライドの方が安全な場合があります。

php -d memory_limit=1G occ <command>

コマンドとメモリの動作を理解している場合にのみ使用してください。PHP-FPMまたはApacheを経由するWebリクエストを修正するものではありません。

php.iniを編集した後も警告が残る理由

症状考えられる原因次のチェック
php -r512Mと表示されるが、ownCloudは依然として128Mと表示CLI PHPのみを変更しましたブラウザのphpinfoと読み込まれた設定ファイルを確認してください。
FPMファイルには512Mと記載されているが、ブラウザには128Mと表示される。Pool、.user.iniまたは別のINIファイルがそれを上書きしますphpinfoの「local」と「master」の値、および解析された追加のINIファイルを調べます。
値は再起動後にのみ変更されます正しいサービスが再起動されませんでした編集後、PHP-FPMまたはApacheを明示的に再起動してください。
再作成後、Dockerの値が古い設定に戻ります。コンテナ内で編集しましたOWNCLOUD_MEMORY_LIMITComposeまたはデプロイ環境で設定します。
警告は消えるが、サーバーはスワップを開始するPHPの同時実行数がホストメモリを超えています。従業員数を削減するか、ワークロードを最適化するか、またはRAMを増設する。

memory_limitとupload_limitを混同しないでください

memory_limit、、upload_max_filesizeそしてpost_max_sizeさまざまな問題を解決します。PHP メモリを増やしても、ユーザーがより大きなファイルをアップロードできるようになるわけではありません。ownCloud の 10.16 設定ノートには、ドキュメントにpost_max_size記載されている最小値として を少なくとも 512 MB に設定する必要があることが別途記載されており、アップロード制限には独自の設定が必要であることが説明されています。

実際の症状が「大容量ファイルのアップロードが失敗する」である場合は、プロキシ/Webサーバーのボディサイズ制限、タイムアウト、および一時ディスク容量を確認してくださいupload_max_filesize。これらの制御の代わりに、post_max_sizeより高い値を使用しないでください。memory_limit

最終チェックリスト

  • ownCloudで警告と現在の値を確認してください。
  • ownCloudがApache mod_phpを使用しているか、PHP-FPMを使用しているかを確認します。
  • ウェブランタイムのロード済み構成ファイルを見つけてください。
  • ウェブPHPをmemory_limit少なくともに設定してください512M。
  • CLI PHPも更新してください。cronoccがより低い制限値を使用している場合も同様です。
  • Dockerの場合は、OWNCLOUD_MEMORY_LIMIT=512Mデプロイ環境で設定してください。
  • PHPを実際に提供しているサービスを再起動または再作成してください。
  • 値はCLIだけでなく、Webランタイムからも確認してください。
  • ownCloudの警告が消えていることを確認してください。
  • 512Mを超える制限値に引き上げる前に、ホストのRAMとスワップ領域を監視してください。

結論

ownCloud 10 で「PHP メモリ制限が推奨値以下」というエラーが発生する場合の確実な解決策は、ownCloud を実際に動作させている PHP ランタイムで 512 MB 以上のメモリ制限を設定し、同じランタイムでその結果を確認することです。最もよくあるエラーは、/etc/php/.../cli/php.iniownCloud が PHP-FPM または Apache を介して実行されている状態で、異なる設定ファイルを編集した場合に発生します。

警告が消え、ルーチン操作が正常に動作し、ホストに十分なメモリ余裕がある場合は、処理を停止してください。特定の操作中にPHPが依然として512MBを使い果たす場合は、「制限値を増やす」のではなく、ワークロード診断に切り替えてください。つまり、失敗しているコマンド、アプリケーション、ログ、同時実行数、および物理RAMを検査してください。より大きな制限値を設定することが適切な場合もありますが、それはワークロードがそれを正当化し、サーバーが安全にサポートできる場合に限ります。

コメントを残す

Nextcloudの「データベースに一部のインデックスが欠落しています」という警告を修正する

Nextcloudの「データベースに一部のインデックスが欠落しています」という警告を修正する

Nextcloudのデータベースインデックス不足警告を、公式のoccコマンドでクリアします。まずバックアップを作成し、変更内容をプレビューしてから修復を実行し、結果を確認してください。

Element WebでKeycloakを使用してシングルサインオン(SSO)を設定する方法

Element WebでKeycloakを使用してシングルサインオン(SSO)を設定する方法

Element Web 用の Keycloak SSO を設定するには、OIDC を Synapse に接続し、正確なコールバック URL を設定し、ユーザー クレームをマッピングし、ログアウトをテストします。

Zimbraの「LDAPサーバーが応答しません」起動エラーを修正する:実践的な復旧ガイド

Zimbraの「LDAPサーバーが応答しません」起動エラーを修正する:実践的な復旧ガイド

応答しないLDAPサーバーが原因で発生するZimbraの起動失敗を診断および修正する方法を学びましょう。これには、サービスチェック、DNS、ポート、証明書、LDAP URL、および復旧検証が含まれます。

ownCloud Infinite Scale 用の S3 オブジェクトストレージの設定方法

ownCloud Infinite Scale 用の S3 オブジェクトストレージの設定方法

ownCloud Infinite Scale向けに、s3ngドライバ、POSIXメタデータ、バケットポリシー、検証、および安全な本番環境チェックを使用して、S3互換のオブジェクトストレージを設定します。

Zimbraメールキューのバックログを修正する:Postfixを安全にフラッシュし、配信を確認する

Zimbraメールキューのバックログを修正する:Postfixを安全にフラッシュし、配信を確認する

Zimbra Postfixのバックログを検査する方法、延期されたメールと保留されたメールを識別する方法、安全なキューフラッシュを実行する方法、メッセージを削除せずに進捗状況を確認する方法を学びましょう。

Kopano Z-PushをActiveSyncモバイル同期用に設定する方法

Kopano Z-PushをActiveSyncモバイル同期用に設定する方法

Z-PushをKopanoと連携させて、ActiveSyncによるメール、連絡先、カレンダー、タスクの安全な同期を設定しましょう。バックエンドと展開方法を比較検討し、モバイル端末の設定を確認してください。

Jitsi Meetで「接続が切断されました」というエラーメッセージが表示される問題を修正する

Jitsi Meetで「接続が切断されました」というエラーメッセージが表示される問題を修正する

Jitsi Meetの接続切断に関するトラブルシューティングを、ブラウザ、モバイルデバイス、不安定なネットワーク、ファイアウォール、およびセルフホスト型サーバー向けの実用的なチェックリストで解説します。

Nextcloud Talkのビデオ通話品質とTURNサーバー接続を修正する

Nextcloud Talkのビデオ通話品質とTURNサーバー接続を修正する

Nextcloud Talkの通話品質のトラブルシューティング、coturnの設定、適切なポートの開放、ICE候補のテスト、TURNまたはHPBのどちらが適切な解決策であるかの判断を行います。

Nginxでカスタム要素Webクライアントをホストする方法

Nginxでカスタム要素Webクライアントをホストする方法

カスタムホームサーバー、HTTPS、キャッシュ、セキュリティヘッダーに加え、一般的なセットアップ上の問題に対する簡単なチェック機能を備えたElement WebをNginxにデプロイします。

BigBlueButtonプレゼンテーションアップロードエラー「サポートされていないファイルタイプ」を修正する

BigBlueButtonプレゼンテーションアップロードエラー「サポートされていないファイルタイプ」を修正する

BigBlueButtonの「サポートされていないファイル形式」表示エラーを修正するには、ファイル拡張子を確認し、実際のP​​DFをエクスポートし、別のファイルをテストし、管理者に連絡すべきタイミングを特定してください。