×

実は、少し前からMedia Syncが途中でプロセス終了してしまい、手詰まり状態。ようやくその回避方法を見つけたのでこの記事でご紹介します。

数週間前から、アメブロ→WordPressへの記事完全移植が進行中。
課題の一つとなっていた画像をはじめとするメディアライブラリは、MediaSyncを使って再構築中。ところが作業が進みライブラリDBが肥大化するにつれ、このMediaSyncがすぐ停まってしまうようになってしまいました。

AJAX errorでMedia Syncがすぐ停止する現象

SynologyのNAS上でWordPressを運用しています。ライブラリ整理のため、Media Syncを用いて大量の画像ファイルを登録していると、 次のようなエラーで処理が途中停止してしまいます。

[Media Sync] [AJAX error] error

大容量ではなくバッチサイズを小さくしても止まる。1〜2ファイルでも止まることがある・・・この原因はPHPのメモリ制限にありました。

問題の本質:SynologyのNAS上ではphp.iniの直接編集は制限されている

SynologyのDSM上ではパッケージとして提供されている「PHP 7.x / 8.x」自体にメモリー上限を解放するUIは見つかりません。

→そこで、SSHでアクセスし直接ファイルを書き換えようとしました。ところがSynology上ではDSM側の保護でシステム破壊リスクが高いことから禁止されているようなのです。

→そのため多くの管理者は「どこでmemory_limitを上げれば良いのか」手詰まりとなってしまうのです。有識者ほど、SSHで解決しようとするでしょうから。

解決策:Web Stationの「スクリプト言語設定」で編集する

実際に有効だった手順(DSM 7.x 環境)を以下に整理します。

手順(抜粋)

  1. DSMの「パッケージセンター」から Web Station を起動
  2. 左ペインの スクリプト言語の設定 を選択
  3. WordPressで使っているプロファイル(例: WordPress / WordPress Profile / PHP 8.0)を選び、編集
  4. コアタブを開き、php.ini相当の設定を編集する
  5. 以下の項目を変更(例):
    • memory_limit: 128M → 2048M
    • max_execution_time: 240 → 2400
  6. 設定保存後、NAS(DSM)を再起動して確実に反映
memory_limit UIの概要

結果

この変更により、Media Syncで数千の対象ファイルを一度も止まらずに完走させることができました。

なぜこの設定が効くのか?

memory_limit は PHP が一つのリクエストで確保できるメモリ上限を示します。AJAXでバッチ処理を繰り返すMedia Syncは、一つの呼び出しで複数の画像処理・サムネ生成・DB書き込みを一挙に行うため、デフォルトの128Mでは足りません。バッチサイズを最小にして処理分割しても足りないくらいなのです。

設定初期値改善値効果
memory_limit128M2048M画像処理やJSON生成でのメモリ不足を回避
max_execution_time2402400長時間バッチ処理を完了させる

応用・注意点

  • 本手法はMedia Syncだけでなく、画像最適化や大量処理系プラグイン全般に有効。
  • 重いテーマを走らせている時のパフォーマンスにも効果があると期待されます。
  • SSHでphp.iniを直編集する方法はDSMの保護に反するため推奨しません。Web Station経由が安全で再現性も高いです。
  • メモリ値を上げすぎるとNAS自体のリソース不足で逆効果になることがあるため、物理メモリ量に合わせて設定してください。(私は元が6GBだったもの→ 10GBに拡張してから設定変更を実施)

まとめ

Synology上のWordPressでAJAXエラーに悩む場合、まずはWeb Stationのスクリプト言語設定からmemory_limitとmax_execution_timeを見直してください。これだけでMedia SyncをはじめとするPHPの大量処理が劇的に安定します。また、これはウェブのUX全体改善にも役立つものと確信します。

参考(公式ナレッジベース)

Synology公式ナレッジベースがヒントになりました。詳細は下記参照:

Synology KB — Web Station の PHP 設定

シリコンパワー ノートPC用メモリ DDR4-2400(PC4-19200) 8GB×1枚 260Pin 1.2V CL17 SP008GBSFU240B02

Synology NASを拡張した時に入れたメモリーがコレ!永久保証の上、レビューも高評価。もちろん正常に動作しており、速度余裕も生まれて快適です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

投稿者

KeroYon

関連投稿

メヒシバ退治 (3)

薬剤 (アージラン液剤) を計3回投下後。・・・メヒシバエリアの低位刈り込みを行いました。 (1mm...

YP-D7 (5)アームを磨きまくって美麗に

入手した2本目のトーンアーム。かなり煤けて黒ずんでいますから、こちらを磨いていきます。ただ酸化腐食は...

タグ:

メヒシバ退治 (2)アージラン投入

メヒシバ撲滅、 天候も回復したので、アージランを投下していきたいと思います。  まず、メヒシバ地帯を...