gpt4 book ai didi

spring - Redis/Jedis 服务不正常

转载 作者:行者123 更新时间:2023-12-02 06:59:56 24 4
gpt4 key购买 nike

我们在带有 Jedis 的 Spring Java 应用程序中使用 Redis 缓存,在高负载期间,缓存会卡住并且无法及时响应。

我们已将 Jedis 连接配置如下:

val clientConfiguration = JedisClientConfiguration
.builder()
.readTimeout(Duration.ofSeconds(2L))
.connectTimeout(Duration.ofSeconds(10L))
.usePooling()
.build()

val configuration = RedisStandaloneConfiguration(redisHost, Integer.parseInt(redisPort))
configuration.password = RedisPassword.of(redisPassword)

val jedisConnectionFactory = JedisConnectionFactory(configuration, clientConfiguration)
jedisConnectionFactory.poolConfig.apply {
maxTotal = 512
maxIdle = 256
minIdle = 16
maxWaitMillis = 2000L
blockWhenExhausted = true
}

Redis 服务器似乎没有负载,也没有显示任何错误。我们可以看到的唯一问题是使用jstack时,有数百个线程卡在RedisCache.get中:

 java.lang.Thread.State: BLOCKED (on object monitor)
at org.springframework.data.redis.cache.RedisCache.get(RedisCache.java:117)
- waiting to lock <0x00000000c00bd5f8> (a org.springframework.data.redis.cache.RedisCache)
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:381)
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:345)
at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:61)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)

如果服务器没有正确响应,我希望看到一些异常,但绝对没有。我们唯一能看到的是 super 慢的响应。

最佳答案

您面临的错误并不是因为redis-server处于任何负载下,而是因为spring-server耗尽了。在配置中:

jedisConnectionFactory.poolConfig.apply {
maxTotal = 512
...
...
blockWhenExhausted = true
}

似乎jedis-pool 已耗尽并阻止新请求。为了最大限度地减少这种情况,您可以增加池大小并检查是否减少maxWaitMillis = 2000LreadTimeout(Duration.ofSeconds(2L))connectTimeout(Duration.ofSeconds(10L)) 确实有任何改进。

关于spring - Redis/Jedis 服务不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57835662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com