

お世話になります。  
現在、Ruby on Rails5.2を使ってアプリケーションを開発しています。  
gemの削除・追加作業を行っており、以下の問題（ブラウザからのアクセス時に502エラー）が起きました。  
何か原因として考えられること、推測レベルで大丈夫なのでもし何か調べてみた方が良いことなどあればご教示いただきたい次第です。

# コードの変更点（２箇所）：

## １．Gemfileに以下変更を加えました。

### 変更前

[code]

    gem 'redis'
    gem 'redis-rails'
    gem 'redis-namespace'
    gem 'redis-store'
    gem 'redis-rack', '~> 2.1.4'
    
[/code]

### 変更後

[code]

    gem 'redis'
    # gem 'redis-rails' # redis-rails gemはRails5.2では不要であり、Railsのデフォルトの設定に含まれるような形のため削除
    gem 'redis-actionpack' # セッションストアでredisを使用するため新規追加
    gem 'redis-namespace'
    gem 'redis-store'
    gem 'redis-rack', '~> 2.1.4'
    
[/code]

## ２．config/environments/production.rbに以下変更を加えました。

### 変更前

[code]

    config.cache_store = :redis_store, "redis://#{Rails.application.secrets.redis[:host]}:6379/0/cache"
    config.session_store :redis_store, servers: "redis://#{Rails.application.secrets.redis[:host]}:6379/0/session"
    
[/code]

### 変更後

[code]

    config.cache_store = :redis_cache_store, { url: "redis://#{Rails.application.secrets.redis[:host]}:6379/0/cache" } # redis-rails gemの書き方でなく、Railsデフォルトの書き方へ変更
    config.session_store :redis_store, servers: ["redis://#{Rails.application.secrets.redis[:host]}:6379/0/session"] # redis-rails gemの書き方でなく、gem 'redis-actionpack'の書き方へ変更
    
[/code]

# 環境

Ruby on Rails 5.2.5  
Ruby 2.6.6  
サーバ：AWS EC2  
OS：AmazonLinux2  
Webサーバ：nginx  
Railsサーバ：unicorn  
キャッシュサーバ＆session_store：Elasticache for redis(7.0.7)

# 行ったこと

大前提ではありますが、元々アプリケーションは正常に問題なく動作していました。  
そして、上記の点のみ変更したコードについて、AWS
EC2上で運用しているRailsアプリケーションへcapistranoを使ってデプロイしました。（bundle
installなどすべて正常完了。capistrano上では `kill -s USR2
#{shared_path}/tmp/pids/unicorn.pid` を行っています）  
デプロイ直後は、ブラウザアクセスなど動作に問題はありませんでした。  
その後、EC2を手動で再起動させ、nginxとunicornも手動で起動させました。（プロセスの起動は正常に完了）

# 起きた問題

上記デプロイ後の再起動後、ブラウザからアプリケーションへアクセスすると、HTTP
502のエラーが出て、アプリケーションへアクセスできない状態となってしまいました。

# 確認したこと

## 開発環境での動作確認

docker-composeで構築している開発環境では問題なく動作できました。  
（上記のgem変更後も、RailsコンテナとRedisコンテナの接続に問題なし）

## ログやメトリクスの状態

  * Railsのログ（production.log）にはエラーログなし。unicorn.logもエラーログなし。
  * Redisサーバのメトリクスでは、CPU使用率やキャッシュヒット率、Network Byte Out/Inの数値がいずれも下がっていた（ただ、極端に下がっているわけでなく、10〜20%程度）
  * EC2のメトリクスではCPU使用率、メモリ使用率が上がっていた。

## Unicornの起動確認

`ps aux | grep unicorn` でunicornのプロセスが存在することを確認。

## NginxとUnicornの接続

Nginxの設定で、unicornへのプロキシパスが正しく設定されていることを確認。  
（unicornのソケットファイルのパスやポート番号は正しい）

## Redisの接続設定確認

RedisサーバのURLやポート番号が正しいことは確認済

情報が限られており大変恐れ入りますが、  
何か考えられる原因や、何かもっと調べてみた方が良いことなどあればお伺いしたい次第です。  
お手数をお掛けしますが、よろしくお願いいたします。

※なお、teratailにも同様の質問をしております。両サイトの解決状況はなるべく即時反映するように致しますので何卒ご了承いただけますと幸いです。


CC BY-SA 4.0
2023-09-27T14:07:30.463
96362
2023-09-27T14:07:30.463
40311
question
ruby-on-rails ruby redis unicorn
Redisを使っているRailsアプリケーションにおいてredis-rails gem削除後にブラウザアクセスで502エラーが発生