

運用中のサービス(1年程度)でRedisが接続できない状況になりサービスが一時停止しました。  
Redisの接続数が増えたことで接続できない状況になったと思われるのですが、  
原因がわからないため質問しました。

**構成**  
AWS  
Redis cache.t2.small (パラメータはデフォルト設定)  
EC2 t2.medium

アプリケーション  
Rails

**Redisの使用方法**  
Railsのsessionデータを管理しています。

**Redisの状況**  
AWSのCloudWatchを確認するとRedisの下記値が増加していました。  
なお、Redis自体は停止はしていません。

CPU使用率 1%(通常) => 20%(障害時)  
[![画像の説明をここに入力](https://i.stack.imgur.com/AYPCF.png)](https://i.stack.imgur.com/AYPCF.png)

ネットワーク受信バイト 80947(通常) => 52549839(障害時)  
[![画像の説明をここに入力](https://i.stack.imgur.com/paaGH.png)](https://i.stack.imgur.com/paaGH.png)

現在の接続カウント 9(通常) => 94(障害時)  
[![画像の説明をここに入力](https://i.stack.imgur.com/u2ftv.png)](https://i.stack.imgur.com/u2ftv.png)

**考えられる原因**  
アクセス増加によるRailsの負荷が原因だと思います。  
しかし、障害発生時のアクセス数(20リクエスト/sec)は平均(50リクエスト/sec)と比べて低いです。  
また、AWSのRedisの為、同じPVC内のアクセスのみ許可されると思うので、外部からコマンドを叩かれないと思います。(外部のServerからtelnetコマンドで確認済み)EC2のIPはプライベートIPで、踏み台からアクセスしています。

この様な状況なのですが、調べた方が良いことや、接続数が増加する要因がわかる方がいらっしゃれば、  
教えていただけませんでしょうか。  
以上、よろしくお願いいたします。


CC BY-SA 4.0
2018-07-23T16:36:10.253
46883
2018-07-24T03:16:04.353
29155
question
ruby-on-rails aws redis
AWS Redis 接続数が上昇(Rails) Errno::ECONNREFUSED


当てずっぽうですが、cache.t2.smallのネットワーク性能は低いので ネットワーク帯域不足っぽいです。

接続数が少なくて、受信バイトが多いということは、大きすぎる値をセットしてる可能性がないか調べてみたいところですね。

また、再現性があるなら 一時的に cache.m3.medium あたりにスケールアップして改善するか見てみると良いと思います。


CC BY-SA 4.0
2018-07-24T03:16:04.353
46889
2018-07-24T03:16:04.353
5008
46883
answer