2013-10-19 72 views
2

我得到一個連接異常(在最後給定的),即使我做了以下內容:Redis的連接關閉錯誤

在創建Jedis的一個實例,我設置了超時字段設置爲1個小時(60 * 60 * 1000 )。我也用0試過了,那也行不通。

當我在7分鐘後檢查日誌時,我注意到了它,儘管我認爲例外會在很早之前發生(在300秒)。爲什麼我一直在得到它?任何想法爲什麼?

Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: It seems like server has closed the connection. 
    at redis.clients.util.RedisInputStream.readLine(RedisInputStream.java:90) 
    at redis.clients.jedis.Protocol.processMultiBulkReply(Protocol.java:111) 
    at redis.clients.jedis.Protocol.process(Protocol.java:64) 
    at redis.clients.jedis.Protocol.read(Protocol.java:127) 
    at redis.clients.jedis.Connection.getBinaryMultiBulkReply(Connection.java:199) 
    at redis.clients.jedis.BinaryJedis.smembers(BinaryJedis.java:1187) 
+0

我遇到過這個問題。你可以幫我嗎?謝謝。 [http://stackoverflow.com/questions/34131736/redis-it-seems-like-server-has-closed-the-connection](http://stackoverflow.com/questions/34131736/redis-it-seems- like-server-has-closed-the-connection) – jonnyLee

回答

1

我建議:

當然,它也可以是由於網絡基礎設施本身,特別是如果你在公共雲中的虛擬機不同的運行Redis的客戶端和服務器。

+0

我檢查redis.conf文件,發現這行「timeout 0」是否需要更改任何內容。我也不明白你的SMEMBER評論。請詳細說明。 – Alex

+0

超時0意味着不活動超時 - 這很好。看着你發佈的堆棧,它似乎在一個smembers命令上失敗了。所以你可能要檢查這個命令返回的集合是小還是非常大。 –

+0

我在連接池的多線程環境中使用jedis。現在我創建了連接池並使用了setTestOnBorrow(true),現在問題似乎已解決。讓我們來看看!!!手指交叉! – Alex