spring session cpu占用过高

  集成spring session很简单,只需几行代码即可。

@Configuration
@EnableRedisHttpSession
public class SessionConfig {

    @Value("${redis.host}")
    private String host;
    @Value("${redis.port}")
    private Integer port;
    @Value("${redis.database}")
    private Integer database;

    @Bean
    public RedisConnectionFactory jedisConnectionFactory() {
        JedisConnectionFactory factory = new JedisConnectionFactory();
        factory.setHostName(host);
        factory.setDatabase(database);
        factory.setPort(port);
        factory.setTimeout(10000);
        return factory;
    }
}

  但请注意,使用EnableRedisHttpSession的默认配置,有可能造成cpu占用过高。这是因为默认使用的是SimpleAsyncTaskExecutor,导致监听redis keyEvent事件时频繁创建线程,造成性能消耗。因此解决方案是定义线程池即可。

@Bean
public ThreadPoolTaskExecutor springSessionRedisTaskExecutor() {
    ThreadPoolTaskExecutor springSessionRedisTaskExecutor = new ThreadPoolTaskExecutor();
    springSessionRedisTaskExecutor.setCorePoolSize(8);
    springSessionRedisTaskExecutor.setMaxPoolSize(16);
    springSessionRedisTaskExecutor.setKeepAliveSeconds(10);
    springSessionRedisTaskExecutor.setQueueCapacity(1000);
    springSessionRedisTaskExecutor.setThreadNamePrefix("SESSION_TASK_EXEC");
    return springSessionRedisTaskExecutor;
}

  有关spring session的实现原因可参考文章:https://www.cnkirito.moe/spring-session-4/。

欢迎关注个人公众号

小虫子编程课

转载于:https://www.cnblogs.com/laud/p/spring_session.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值