WordPressで「Error establishing a Redis connection」を解決する方法

intermediate📝 WordPress2026-07-05| Ubuntu/CentOS, Nginx/Apache, WordPress 5.0+, Redis Server, PHP-Redis 拡張機能

Error Message

Error establishing a Redis connection
#redis#object-cache#wordpress最適化#サーバー管理#php

問題の概要WordPressのダッシュボードを開くと、「Error establishing a Redis connection」という厄介な警告が表示されることがあります。これは、通常 Redis Object Cache や WP Redis といったプラグインが Redis サーバーとの接続(ハンドシェイク)に失敗したときに発生します。サイト自体はフォールバック機能で表示されるかもしれませんが、パフォーマンスは大幅に低下します。データベースがキャッシュなしですべての処理を行う必要があるため、ページの読み込み時間が 200ms から 2秒以上に跳ね上がることも珍しくありません。

主な原因- Redis サービスがクラッシュした、または再起動後に起動しなかった。- PHP のバージョンアップ後などに PHP-Redis 拡張が不足している。- wp-config.php の認証情報やホスト設定が間違っている。- Redis が誤った IP またはポートで待機している。- サーバーの RAM が不足し、Linux の OOM (Out Of Memory) キラーによって Redis プロセスが強制終了された。## ステップ 1: Redis が実際に動作しているか確認する多くの場合、単にサービスが停止しているだけです。SSH でサーバーにログインし、すぐにステータスを確認してください。

# Ubuntu/Debianの場合
sudo systemctl status redis-server

# CentOS/RHELの場合
sudo systemctl status redis

出力結果が inactive (dead) または failed と表示されている場合は、サービスを起動してください。

sudo systemctl start redis-server

次回のサーバーメンテナンス後に自動で起動するように、自動起動を有効にしておきましょう。

sudo systemctl enable redis-server

ステップ 2: 手動で接続をテストするサービスが実行されていても、接続が機能しているとは限りません。内蔵の redis-cli ツールを使用してサーバーに ping を送り、応答を確認します。

redis-cli ping

正常なサーバーは PONG と返答します。「Connection refused」と表示される場合、Redis が TCP ポートではなく Unix ソケットを使用するように設定されているか、あるいは別のポートで待機している可能性があります。

ステップ 3: PHP-Redis 拡張機能を確認するWordPress が Redis と通信するには「通訳」が必要です。それが PHP-Redis 拡張機能です。サイトを PHP 8.1 から 8.3 にアップグレードしたばかりの場合、新しいバージョン用の拡張機能がインストールされていない可能性があります。

モジュールが有効かどうかを確認するには、次のコマンドを実行します:

php -m | grep redis

結果が空の場合は、拡張機能をインストールします。Ubuntu で PHP 8.3 を使用している場合は、以下を実行します:

sudo apt install php8.3-redis
sudo systemctl restart php8.3-fpm
sudo systemctl restart nginx

ステップ 4: wp-config.php の設定を監査するサーバーに問題がないのに WordPress でエラーが出る場合は、設定に原因がある可能性が高いです。wp-config.php ファイルを開き、以下の定数を確認してください。

define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
// define('WP_REDIS_PASSWORD', 'あなたのパスワード');

よくある落とし穴に注意してください:

  • Localhost vs 127.0.0.1: 一部のサーバーでは localhost の名前解決が正しく行われないことがあります。安全のため 127.0.0.1 を使用してください。- パスワード保護: redis.confrequirepass を設定している場合は、設定ファイルにもそれを含める必要があります。- Unix ソケット: より高いパフォーマンスを求める場合は、IP アドレスの代わりに /var/run/redis/redis.sock のようなソケットパスを使用してください。## ステップ 5: ファイアウォールと Bind Address を確認するRedis を別のデータベースサーバーで実行していますか?その場合、Redis はデフォルトでローカル接続のみを許可するように設定されています。外部からのトラフィックを許可するには、/etc/redis/redis.conf を編集する必要があります。
# 次の行を探します:
bind 127.0.0.1

# WebサーバーのプライベートIPを含めるように変更します:
bind 127.0.0.1 10.0.0.5

設定を更新したら、Redis を再起動します。Web サーバーからの通信を許可するために、ファイアウォール(UFW または Firewalld)でポート 6379 を開放するのを忘れないでください。

修正を確認する方法- ダッシュボードでのテスト: WordPress の 設定 > Redis に移動します。鮮やかな緑色で「Connected(接続済み)」と表示されていれば成功です。- ライブモニタリング: ターミナルで redis-cli monitor を実行した状態で、Web サイトを更新してください。GETSET コマンドが大量に表示されれば、接続は生きています。- ログの確認: それでも問題が解決しない場合は、/var/log/redis/redis-server.log を確認して、メモリや権限に関する特定のエラーがないか調べてください。## 安定運用のためのプロのヒント- メモリ管理: Redis は RAM 上で動作します。サーバーの RAM が 2GB しかない場合は、OS 全体がクラッシュしないように redis.confmaxmemory 512mb などの制限を設定してください。- エビクションポリシー: maxmemory-policy allkeys-lru を設定しましょう。これにより、容量が不足したときに単に停止するのではなく、古くて使用頻度の低いキャッシュファイルから削除するように Redis に指示できます。

Related Error Notes