WordPressのautoloaded optionsが肥大化してサイトが遅い時の削除と高速化

WordPressのautoloaded optionsが肥大化してサイトが遅い時の削除と高速化

WordPressのautoloaded optionsが肥大化してサイトが遅い時の削除と高速化

WordPressのサイトヘルスで「autoloaded options」が94MBに肥大化し、ページ表示が数秒かかる・503エラーが出る場合は、削除済みプラグインの残した設定データが主な原因だ。古いプラグインのプレフィックスを持つ行を安全に削除すれば、多くのケースで速度が改善する。

autoloaded optionsがサイトを遅くする理由

autoloaded optionsがサイトを遅くする理由

autoloaded optionsとは、WordPressがページを表示するたびに必ずデータベースから読み込む「自動読み込み設定」の塊だ。通常は数百KBから数MB程度に収まるが、プラグインを削除してもその設定が残り続けると、数十MB単位で膨れ上がる。

サイトヘルスで「サイトには4784個の自動読み込みオプション(サイズ94MB)があります」と表示される場合、すべてのページ表示のたびに94MBものデータがメモリ上に展開される。Query Monitorでメモリ使用量が214MBに達するのはそのためで、サーバーのメモリ上限に近づくと503エラーが発生する。

Before(肥大化した状態)
autoloaded options 94MB(4784個)
ページ表示ごとに214MBのメモリを消費
表示に数秒かかる・頻繁に503エラー
↓
After(不要な行を削除後)
autoloaded options数MB(数百個)
メモリ消費が大幅に減る
ページ表示が1秒以内に改善
■ エラー状態 ■ 修正後

このデモは肥大化した状態と削除後の状態の違いを示したイメージだ。まずは不要なデータを特定し、安全に削除する手順を確認する。

古いプラグインの残骸を特定する方法

古いプラグインの残骸を特定する方法

問題の原因を特定するには、Advanced DB Cleanerの「オプション」タブで、同じプレフィックスを持つ行が大量にないかを確認する。たとえば「hashimage_cache_8e49faf63a472e474187cf79ab140ed9」のような行が数千件あれば、それは削除済みプラグインが作り残したキャッシュだ。

プレフィックスとは、オプション名の先頭部分「hashimage_cache_」のような共通文字列のことだ。この部分が同じ行は、かつて使っていた1つのプラグインが一括で作ったものと考えてよい。プラグイン本体が削除されていれば、このデータは使われない「残骸」になる。

念のため、サーバーのwp-contentフォルダ内を「hashimage_cache」または「hashimage」で検索し、現在アクティブなプラグインやテーマがこのプレフィックスを使っていないかを確認しておく。使っていなければ削除して安全だ。

autoloaded optionsを安全に削除する手順

autoloaded optionsを安全に削除する手順

削除作業に入る前に、必ずデータベースの完全バックアップを取得する。万が一、依存しているプログラムがあった場合に復元できるからだ。バックアップはレンタルサーバーの管理画面やUpdraftPlusなどのバックアッププラグインで取得できる。

STEP 1 データベースの完全バックアップを取得する
↓
STEP 2 wp-content内でプレフィックスが使われていないか検索する
↓
STEP 3 Advanced DB Cleanerで該当行を一括削除する
↓
STEP 4 削除後にサイトヘルスと表示速度を再確認する

このステップ図は削除作業の全体像を示している。各ステップの詳細を以下で説明する。

バックアップを必ず取る

削除する行は「おそらく不要」ではあっても、確実に不要とは言い切れない。バックアップなしで数千件の行を削除するのは危険だ。phpMyAdminからSQLファイルをエクスポートするか、バックアッププラグインでデータベース全体を保存しておく。これなら、もし問題が起きてもすぐに元へ戻せる。

削除対象のプレフィックスが本当に未使用か確認する

FTPソフトやサーバーのファイルマネージャーでwp-contentフォルダを開き、プラグインフォルダとテーマフォルダを横断して「hashimage」や対象のプレフィックスを含むファイルがないか検索する。検索して何もヒットしなければ、そのプレフィックスを使うプログラムは存在しないため、該当行を削除しても安全だ。

Advanced DB Cleanerで行を削除する

Advanced DB Cleanerの「オプション」タブを開き、検索ボックスにプレフィックス(例「hashimage_cache_」)を入力する。すると該当行だけが絞り込まれる。全選択して削除を実行する。数千件ある場合は、一度に全件削除せず、500件や1000件ずつ分けて削除するとタイムアウトを防げる。とくにサーバーが遅い場合は、より少ない件数で分けて実行する。

削除後はサイトヘルスを再度確認し、autoloaded optionsのサイズがどれだけ減ったかを確かめる。94MBから数MBに減っていれば、それが主因だったことがわかる。

503エラーが続く場合の対処

503エラーが続く場合の対処

autoloaded optionsを削除しても503エラーが続く場合は、サーバーエラーログを確認する。503エラーはサーバーがリクエストを処理しきれない時に発生するため、エラーログに具体的な原因が記録されている。ログを確認せずに推測で対処しても時間の無駄になりやすい。

サーバーの契約プランによっては、メモリ上限やプロセス数が小さいために、WordPress本体の動作だけで503エラーになることもある。エラーログに「memory exhausted」や「timeout」の記録がある場合は、PHPメモリ上限の引き上げやサーバープランの見直しが必要になる場合がある。

サイトをさらに高速化するための追加対策

サイトをさらに高速化するための追加対策

autoloaded optionsの削除が済んだら、残っている大きな行も見直す。Advanced DB Cleanerでオプションをサイズ順に並べ替え、不要な行が残っていないか確認する。しばしば、削除したはずの別プラグインが数MB単位の行を残していることがある。

期限切れのトランジェント(一時保存データ)も削除しておく。これもオプションテーブルに溜まり、放置すると肥大化の原因になる。キャッシュプラグインや専用のクリーンアップ機能があれば、それを使って一括削除できる。

基本的な高速化としては、画像の最適化(アップロード前に圧縮する)、キャッシュプラグインの導入、不要なプラグインの無効化、PHPバージョンの更新などが有効だ。これらはautoloaded optionsの肥大化とは別の話だが、組み合わせることで体感速度が大きく変わる。

よくある質問

autoloaded optionsを削除しても本当に安全か

削除する行のプレフィックスが現在のプラグインやテーマで使われていないことを確認すれば、基本的に安全だ。ただし必ずバックアップを取ってから作業するのが鉄則。削除後に不具合が出ても、バックアップから復元すればよい。

削除するとサイトが壊れないか心配だ

削除済みプラグインの残した設定データは、サイトの見た目やコンテンツには影響しない。削除対象が現在使っていないプラグインの行だと確認できていれば、サイトが壊れるリスクはごく低い。心配な場合は、本番環境ではなくステージング環境で先に試す方法もある。

phpMyAdminで直接削除してもよいか

SQLに慣れているならphpMyAdminで削除しても問題ない。たとえば「DELETE FROM wp_options WHERE option_name LIKE ‘hashimage_cache_%’;」のようなSQL文で該当行を一括削除できる。作業前に必ずテーブルのエクスポートを行い、削除後はサイトヘルスで効果を確認する。SQL文は環境によってテーブル名のプレフィックス(wp_など)が異なるため、実際のテーブル名を確認してから実行する。

autoloaded optionsがまた肥大化した場合はどうするか

同じ問題が再発する場合は、新しいプラグインをインストールするたびにautoloaded optionsのサイズをチェックする習慣をつける。また、プラグインを削除する時は、可能ならプラグイン側の「アンインストール時にデータを削除する」オプションを有効にしてから削除すると、残骸が残りにくい。

この記事のポイント

  • autoloaded optionsの肥大化はサイト表示を遅くし、503エラーの原因になる
  • 削除済みプラグインの残した行が肥大化の主因であることが多い
  • プレフィックスを特定し、未使用を確認してから削除する
  • 削除前には必ずデータベースの完全バックアップを取る
  • 削除後はサイトヘルスでautoloaded optionsのサイズを再確認する
佐々木 太陽

・ Reddit、Stack Overflow、WordPress.org フォーラムを日々巡回し、現場の悩みを拾い上げて記事化 ・ WordPress、WooCommerce、Next.js などモダンWeb制作領域のトラブルシューティングが専門 ・ 「検索しても答えが見つからなかった」を一つでも減らすことが目標 ・ エラーメッセージから根本原因にたどり着く粘り強い調査が得意 ・ 初心者がつまずきやすい箇所を先回りで解決する記事作りを心がけている

この記事に関連するサービス

メッセージを残す