2017-02-10 13 views
0

私たちはキャッシュストアとしてredis(Elasticache)を使用しています。接続のタイムアウトが原因でクラッシュしました.3つのアプリケーションサーバーがあり、phusion乗客を使用しています。クラッシュ時には、約200のアクティブな接続があります。Redis :: TimeoutError:接続タイムアウトエラー - レールキャッシュ

/home/chillr/deploy/chillr-api/shared/vendor/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/connection/ruby.rb:55:in `rescue in _read_from_socket' 
/home/chillr/deploy/chillr-api/shared/vendor/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/connection/ruby.rb:48:in `_read_from_socket' 
/home/chillr/deploy/chillr-api/shared/vendor/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/connection/ruby.rb:41:in `gets' 
/home/chillr/deploy/chillr-api/shared/vendor/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/connection/ruby.rb:273:in `read' 
/home/chillr/deploy/chillr-api/shared/vendor/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/client.rb:248:in `block in read' 
/home/chillr/deploy/chillr-api/shared/vendor/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/client.rb:236:in `io' 
/home/chillr/deploy/chillr-api/shared/vendor/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/client.rb:247:in `read' 
/home/chillr/deploy/chillr-api/shared/vendor/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/client.rb:112:in `block in call' 
/home/chillr/deploy/chillr-api/shared/vendor/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/client.rb:217:in `block (2 levels) in process' 
/home/chillr/deploy/chillr-api/shared/vendor/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/client.rb:353:in `ensure_connected' 
/home/chillr/deploy/chillr-api/shared/vendor/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/client.rb:207:in `block in process' 
/home/chillr/deploy/chillr-api/shared/vendor/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/client.rb:292:in `logging' 
/home/chillr/deploy/chillr-api/shared/vendor/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/client.rb:206:in `process' 
/home/chillr/deploy/chillr-api/shared/vendor/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/client.rb:112:in `call' 

SlOWLOGは

1) 1) (integer) 6867375 
2) (integer) 1486701507 
3) (integer) 62008 
4) 1) "eval" 
    2) "for i, name in ipairs(redis.call('KEYS', 'cache:user_transaction_logs:*:9008245678')) do redis.call('DEL', name); end" 
    3) "0" 
2) 1) (integer) 6867374 
    2) (integer) 1486701507 
    3) (integer) 61989 
    4) 1) "KEYS" 
     2) "cache:user_transaction_logs:*:9008245678" 
3) 1) (integer) 6867373 
    2) (integer) 1486701507 
    3) (integer) 61026 
    4) 1) "eval" 
     2) "for i, name in ipairs(redis.call('KEYS', 'cache:user_transaction_logs:*:8888662136')) do redis.call('DEL', name); end" 
     3) "0" 
4) 1) (integer) 6867372 
    2) (integer) 1486701507 
    3) (integer) 61006 
    4) 1) "KEYS" 
     2) "cache:user_transaction_logs:*:8888662136" 
5) 1) (integer) 6867371 
    2) (integer) 1486701507 
    3) (integer) 63070 
    4) 1) "eval" 

我々は

  • Elasticacheキャッシュを使用するコマンド。接続の
  • t2.mediumのPhusion旅客

いいえクラッシュ175..200

GEM Redisの(3.2.1) のRedisレール(5.0.1)

時実行可能な処理

+0

最初に、このチェックリストをお試しください:取得したいhttps://redis.io/commands/keys –

+0

しかし、我々はこのcase.Weでそれを避けることはできませんキャッシュからユーザーのすべてのトランザクション。任意の代替方法 – tes

+0

ユーザーIDとトランザクションIDをリンクするセットを使用するなど、ユーザーのトランザクションを直接検索できるように、スキャンを試みるか、データ構造を変更できます。 –

答えて

0

Redisサーバーの現在のリソース使用状況を監視します。 一時的に接続タイムアウトの再接続を増やしてください。

生産にキーを使用しないでください

https://redis.io/topics/latency

+0

elasticache server.Waitingも参照してください – tes

+0

okクール、私たちに結果を知らせてください –

関連する問題