码迷,mamicode.com
首页 > 编程语言 > 详细

spring session cpu占用过高

时间:2019-07-22 16:31:41      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:hostname   tab   alt   task   解决方案   实现   new   name   event   

??集成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/。

欢迎关注个人公众号

技术图片

spring session cpu占用过高

标签:hostname   tab   alt   task   解决方案   实现   new   name   event   

原文地址:https://www.cnblogs.com/laud/p/spring_session.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!