spring cloud gateway中redis一直打印重連日志問題及解決
問題
spring cloud gateway集成了redis后,一直出現(xiàn)重連的日志
如下:
gateway | 2020-06-28 10:56:11.133 INFO 1 --- [xecutorLoop-2-2] i.l.core.protocol.ConnectionWatchdog : Reconnecting, last destination was 192.171.0.9/192.171.0.9:6379
gateway | 2020-06-28 10:56:11.148 INFO 1 --- [llEventLoop-4-6] i.l.core.protocol.ReconnectionHandler : Reconnected to 192.171.0.9:6379
gateway | 2020-06-28 11:01:12.431 INFO 1 --- [xecutorLoop-2-3] i.l.core.protocol.ConnectionWatchdog : Reconnecting, last destination was 192.171.0.9/192.171.0.9:6379
gateway | 2020-06-28 11:01:12.441 INFO 1 --- [llEventLoop-4-8] i.l.core.protocol.ReconnectionHandler : Reconnected to 192.171.0.9:6379
gateway | 2020-06-28 11:06:13.231 INFO 1 --- [xecutorLoop-2-4] i.l.core.protocol.ConnectionWatchdog : Reconnecting, last destination was 192.171.0.9/192.171.0.9:6379
gateway | 2020-06-28 11:06:13.237 INFO 1 --- [llEventLoop-4-2] i.l.core.protocol.ReconnectionHandler : Reconnected to 192.171.0.9:6379
分析
spring boot 2.0之后spring-boot-starter-data-redis默認不再使用jedis連接redis,而是lettuce.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <!-- 排除lettuce包,使用jedis代替--> <!--<exclusions>--> <!--<exclusion>--> <!--<groupId>io.lettuce</groupId>--> <!--<artifactId>lettuce-core</artifactId>--> <!--</exclusion>--> <!--</exclusions>--> </dependency> <!-- jedis --> <!--<dependency>--> <!--<groupId>redis.clients</groupId>--> <!--<artifactId>jedis</artifactId>--> <!--<version>2.9.0</version>--> <!--</dependency>-->
考慮是不是程序長時間沒有使用redis,而導(dǎo)致連接斷開.
修改連接池最小空閑連接數(shù):
spring.redis.host=localhost spring.redis.password= # 連接超時時間(毫秒) spring.redis.timeout=10000 # Redis默認情況下有16個分片,這里配置具體使用的分片,默認是0 spring.redis.database=0 # 連接池最大連接數(shù)(使用負值表示沒有限制) 默認 8 spring.redis.lettuce.pool.max-active=8 # 連接池最大阻塞等待時間(使用負值表示沒有限制) 默認 -1 spring.redis.lettuce.pool.max-wait=-1 # 連接池中的最大空閑連接 默認 8 spring.redis.lettuce.pool.max-idle=8 # 連接池中的最小空閑連接 默認 0, 修改為1 spring.redis.lettuce.pool.min-idle=1
注意修改完之后需要增加新的依賴包,不然會報錯
<!--配置lettuce.pool.min-idle需要增加的依賴--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.4.2</version> </dependency>
重啟完程序之后,發(fā)現(xiàn)每5分鐘打印重連日志依然存在.
解決
這個不是錯誤,只是一個INFO級別的日志,可以日志級別調(diào)高
例如:
<logger name="io.lettuce.core.protocol" level="ERROR"> <appender-ref ref="ERROR_FILE" /> </logger>
原因
這是lettuce-core的實現(xiàn)里,lettuce與redis保持長連接,但是redis.conf默認配置timeout 300是當(dāng)客戶端閑置300秒后關(guān)閉連接(這里可以設(shè)置為0永不關(guān)閉),所以Lettuce在redis主動斷開連接后會再次與redis建立連接。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java內(nèi)部類的實現(xiàn)原理與可能的內(nèi)存泄漏說明
這篇文章主要介紹了Java內(nèi)部類的實現(xiàn)原理與可能的內(nèi)存泄漏說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10Java面試題 從源碼角度分析HashSet實現(xiàn)原理
這篇文章主要介紹了Java面試題 從源碼角度分析HashSet實現(xiàn)原理?,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07SpringBoot結(jié)合Redis實現(xiàn)緩存
本文主要介紹了SpringBoot結(jié)合Redis實現(xiàn)緩存,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06springboot多個service互相調(diào)用的事務(wù)處理方式
這篇文章主要介紹了springboot多個service互相調(diào)用的事務(wù)處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02詳解spring cloud構(gòu)建微服務(wù)架構(gòu)的網(wǎng)關(guān)(API GateWay)
這篇文章主要介紹了詳解spring cloud構(gòu)建微服務(wù)架構(gòu)的網(wǎng)關(guān)(API GateWay),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01