如何将InMemoryWebSessionStore的总存储会话数调至最大?
解决InMemoryWebSessionStore会话总数上限问题
此问题并非关于并发用户会话,而是内存中可存储的会话总数达到上限导致报错,报错日志如下:
java.lang.IllegalStateException: Max sessions limit reached: 10000 at org.springframework.web.server.session.InMemoryWebSessionStore$InMemoryWebSession.checkMaxSessionsLimit(InMemoryWebSessionStore.java:276) at org.springframework.web.server.session.InMemoryWebSessionStore$InMemoryWebSession.save(InMemoryWebSessionStore.java:251) at org.springframework.web.server.session.DefaultWebSessionManager.save(DefaultWebSessionManager.java:123) at org.springframework.web.server.session.DefaultWebSessionManager.lambda$null$0(DefaultWebSessionManager.java:88) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:113) at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:272) at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:230) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:171) at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:236)
你创建的Bean写法是正确的:
@Bean public InMemoryWebSessionStore inMemoryWebSessionStore() { InMemoryWebSessionStore inMemoryWebSessionStore = new InMemoryWebSessionStore(); inMemoryWebSessionStore.setMaxSessions(-1); return inMemoryWebSessionStore; }
InMemoryWebSessionStore默认最大会话数为10000,设置setMaxSessions(-1)会取消会话总数限制。但需要注意,无限制存储会话可能引发内存占用过高的问题,建议根据业务实际情况设置合理上限,或考虑用Redis等分布式会话存储替代内存存储,避免单点内存压力。
内容的提问来源于stack exchange,提问作者matt2022
相关产品推荐
相关产品推荐

