問題の概要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.confでrequirepassを設定している場合は、設定ファイルにもそれを含める必要があります。- 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 を開放するのを忘れないでください。

