2015-04-02 115 views
11

我在我的應用程序中(在UI和後臺作業中)都不斷收到Redis :: Timeout錯誤。我正在爲Redis使用AWS ElastiCache服務。Rails應用程序中的Redis :: TimeoutError

這就是我如何創建Redis連接。在我的config/application.rb中,我有:

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

如何避免出現超時錯誤?我使用的是默認的連接設置如下:

> $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

在哪種情況下你會得到超時?在任何嘗試? – soveran 2015-04-02 11:29:16

+1

零星發生,我無法可靠地重現它。當發送異常通知時我會了解它。 – 2015-04-02 11:46:35

+1

當發生這種情況時,你可以檢查你的Ruby應用程序的內存使用情況嗎?當垃圾收集器運行時會發生嗎? – soveran 2015-04-02 20:17:56

回答

0

您應與Connection Pool Gem的幫助集中你的Redis的連接,增加超時值,如果問題仍然存在:

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

Redis Gem

相關問題