中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redis使用lettuce啟動導致內存泄漏錯誤怎么解決

發布時間:2022-02-24 17:31:51 來源:億速云 閱讀:1464 作者:iii 欄目:開發技術

本篇內容主要講解“redis使用lettuce啟動導致內存泄漏錯誤怎么解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“redis使用lettuce啟動導致內存泄漏錯誤怎么解決”吧!

redis 使用 lettuce 出現

LEAK: hashedwheelTimer.release() was not called before it's garbage-collected. Enable advanced leak

內存泄漏。其實是內存不夠大導致。

找到eclispe 中window->preferences->Java->Installed JRE ,點擊右側的Edit 按鈕,在編輯界面中的 “Default VM Arguments ”選項中,填入如下值即可。

-Xms64m -Xmx128m

內存調的足夠大可解決。

另一種方法無法解決。不知道是不是方法設置不對的問題

1、打開eclipse配置文件eclipse.ini,更改把-Xmx(其數值代表jvm可以使用的最大內存數)

2. 運行java程序時,選擇run->run configuration->arguments,輸入-Xms100M -Xmx800M(-Xms代表jvm啟動時分配的內存大小,-Xmx代表可最大分配多少內存)。

補充:Redis連接池Lettuce踩坑記錄

一、引言

近期項目頻繁部署不同測試環境,在搭建運行環境與部署項目過程中踩到了不少Redis的坑。項目是基于SpringBoot2.1.12,SpringBoot2.1.X集成jar包Spring-data-redis-start 使用Lettuce作為Redis連接池。

SpringBoot1.x默認采用Jedis作為redis客戶端連接池。

SpringBoot2.x,spring-data-redis 默認采用Lettuce作為redis客戶端驅動連接池。

二、踩坑場景

運行環境Redis集群中某個master節點不穩定連接不上,導致SpringBoot應用連接Redis報錯,報錯連接timeout。

三、解決方案

基于Spring-data-redis重寫RedisConnectionFactory Bean。需要設置“取消校驗集群節點的成員關系”:.validateClusterNodeMembership(false)。

1、redis配置

spring:
 redis:
   cluster:
     nodes:
     - ${redis.host.cluster} #redis集群ip-port
   password: ${redis.password}
   timeout: 5000 #連接超時時間
   lettuce:
     pool:
       max-active: 10 #連接池最大連接數
       max-wait: -1 #連接池最大阻塞時間
       max-idle: 5 #連接池中最大空閑連接
       min-idle: 1 #連接池中最小空閑連接
redis:
 cluster:
   enabled: true

2、Config配置類

@Data
@Component
@ConditionalOnProperty(name = "redis.cluster.enabled", havingValue = "true", matchIfMissing = false)
public class RedisConfig {
    @Autowired
    RedisProperties redisProperties;
    // 在構建LettuceConnectionFactory時,如果不使用內置的destroyMethod,可能會導致Redis連接早于其它Bean被銷毀
    @Bean(destroyMethod = "destroy")
    public RedisConnectionFactory newLettuceConnectionFactory() {
        // 配置用于開啟自適應刷新和定時刷新。如自適應刷新不開啟,Redis集群變更時將會導致連接異常
        ClusterTopologyRefreshOptions clusterTopologyRefreshOptions = ClusterTopologyRefreshOptions.builder()
                .enablePeriodicRefresh(Duration.ofSeconds(60))// 開啟周期刷新(默認60秒)
                .enableAdaptiveRefreshTriggers(RefreshTrigger.ASK_REDIRECT,RefreshTrigger.UNKNOWN_NODE)// 開啟自適應刷新
                .build();
        ClusterClientOptions clusterClientOptions = ClusterClientOptions.builder()
                                 .topologyRefreshOptions(clusterTopologyRefreshOptions)//拓撲刷新
                                 .disconnectedBehavior(ClientOptions.DisconnectedBehavior.REJECT_COMMANDS)
                                 .autoReconnect(true)
                                 .socketOptions(SocketOptions.builder().keepAlive(true).build())
                       .validateClusterNodeMembership(false)// 取消校驗集群節點的成員關系
                                 .build();
        LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
                .clientOptions(clusterClientOptions)
                                .readFrom(ReadFrom.SLAVE_PREFERRED)
                                .build();
        return new LettuceConnectionFactory(getClusterConfiguration(), clientConfig);
    }
    
    private  RedisClusterConfiguration getClusterConfiguration() {
        RedisProperties.Cluster clusterProperties = redisProperties.getCluster();
        RedisClusterConfiguration config = new RedisClusterConfiguration(clusterProperties.getNodes());
        if (clusterProperties.getMaxRedirects() != null) {
            config.setMaxRedirects(clusterProperties.getMaxRedirects());
        }
        if (redisProperties.getPassword() != null) {
            config.setPassword(RedisPassword.of(redisProperties.getPassword()));
        }
        return config;
    }
}

注意:

RedisClusterConfiguration getClusterConfiguration()需要設置Password,不然SpringBoot啟動報認證錯誤:

“io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required”

如下:

另外,lettuce-core jar包版本不能過低,避免部分配置項無法支持,以上配置為lettuce-core-5.18.RELEASE.jar。

到此,相信大家對“redis使用lettuce啟動導致內存泄漏錯誤怎么解決”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇安县| 温宿县| 鹿邑县| 高台县| 哈密市| 揭西县| 庆云县| 即墨市| 扶余县| 涟水县| 阜南县| 霸州市| 叙永县| 新平| 彭泽县| 西城区| 安阳县| 天柱县| 台中县| 万荣县| 宁陵县| 德兴市| 兴宁市| 三亚市| 定安县| 清涧县| 宣汉县| 十堰市| 鸡西市| 新乐市| 元阳县| 临沂市| 安溪县| 海晏县| 璧山县| 枣阳市| 吴忠市| 明水县| 宜宾县| 买车| 上蔡县|