springboot使用redis压力测试出现内存泄漏解决方案
我们引入redis依赖是<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>在压测的收产生堆外内存溢出:OutOfDirectMemo
·
我们引入redis依赖是
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
在压测的收产生堆外内存溢出:OutOfDirectMemoryError的原因:
1)、Springboot2.0以后默认使用Lettuce作为操作redis的客户端。它使用netty进行网络通信。
2), Lettuce的bug导致netty堆外内存溢出 -Xmx300m; netty如果没有指定堆外内存,默认使用Xmx300m
可以通过-Dio.netty.maxDirectMemory进行设置
解决方案: 不能使用-Dio.netty.maxDirectMemory只是去调大堆外内存。
1)、可以升级Lettuce客户端。 2)可以切换使用jedis
这里我们采用的是切换到jedis,所以需要修改对应的将默认的lettuce排除调,添加jedis依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<!-- Lettuce的bug导致netty堆外内存溢出 切换使用jedis-->
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Lettuce的bug导致netty堆外内存溢出 切换使用jedis-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献2条内容
所有评论(0)