2015-04-02 18 views
11

Uygulamamda Redis :: Timeout hatası alıyorum (hem UI'de hem de arka planda çalışanlar). Redis için AWS ElastiCache servisini kullanıyorum.Redis :: Rails uygulamasında TimeoutError

Bu şekilde bir Redis bağlantısı oluşturuyorum. Benim config/application.rb, ben var:

$redis = Redis.new(host: REDIS_HOST, port: REDIS_PORT, db: REDIS_DB) 

nasıl zaman aşımı hataları alıyorum önleyebilirsiniz?

> $redis.client.options[:reconnect_attempts] 
=> 1 
> $redis.client.options[:timeout] 
=> 5.0 
> $redis.client.options[:tcp_keepalive] 
=> 0 
> $redis.client.options[:inherit_socket] 
=> false 
+1

Hangi koşullar altında zaman aşımı oluyorsunuz? Herhangi bir girişimde? – soveran

+1

Sporadik bir şekilde gerçekleşiyor ve güvenilir bir şekilde yeniden üretemedim. İstisna bildirimi gönderildiğinde bunu öğrenirim. –

+1

Bu olduğunda Ruby uygulamanızın bellek kullanımını kontrol edebilir misiniz? Çöp toplayıcısı çalıştığında olur mu? – soveran

cevap

0

Sen Connection Pool Gem yardımıyla Redis bağlantıları havuz ve sorun devam ederse zaman aşımı değerini artırmak olmalıdır: şu şekildedir: varsayılan bağlantı ayarlarını kullanıyorum

ConnectionPool.new(size: 5, timeout: 3) {Redis.new({:host => 'localhost', :port => 6379, :db => 1, :timeout => 240})} 

Redis Gem