Redis超时相关

1、在使用的StackExchange.Redis的NuGet包连接Redis的时候发现时不时的发现Redis连接超时

排查日志发现异常

StackExchange.Redis.RedisTimeoutException: Timeout awaiting response (outbound=0KiB, inbound=0KiB, 5002ms elapsed, timeout is 5000ms),

command=GET, next: GET RedisKey, inst: 0, qu: 0, qs: 7, aw: False, rs: ReadAsync, ws: Idle, in: 1738, in-pipe: 0, out-pipe: 0, serverEndpoint: xxx.xxx.xxx.xxx:6379, mc: 1/1/0, mgr: 10 of 10 available,

clientName: clientName_XXXXXXX, IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=10,Free=32757,Min=1,Max=32767), v: 2.2.4.27433

解决方法

在启动的时候设置一下全局线程池设置最小线程数

System.Threading.ThreadPool.SetMinThreads(200, 200); //设置全局线程池

 

### 解决Spring Boot中Redis连接超时的问题 在处理Spring Boot应用程序中的Redis连接超时时,可以调整Jedis客户端的配置参数来优化性能和稳定性。具体来说,在`application.properties`或`application.yml`文件中设置合理的超时时间和重试策略能够有效减少因网络延迟或其他因素引起的连接失败。 对于基于Jedis连接器的情况,可以通过如下方式修改默认行为: #### 修改Jedis连接池配置 通过自定义数据源属性,允许更灵活地控制与Redis服务器之间的交互过程。以下是具体的配置项说明[^2]: - `spring.redis.jedis.pool.max-idle`: 设置最大空闲连接数,默认值为8。 - `spring.redis.jedis.pool.min-idle`: 设置最小空闲连接数,默认值为0。 - `spring.redis.timeout`: 定义尝试建立新连接的最大等待毫秒数;如果超过此期限,则抛出异常。建议根据实际环境适当增加该数值以应对瞬时高并发场景下的压力测试需求。 ```yaml spring: redis: jedis: pool: max-active: 8 # 连接池最大活动对象数量 max-wait: -1ms # 当borrow一个jedis实例时,最大的等待时间, 如果超时则直接报错, 小于零表示无限期等待 min-evictable-idle-time-millis: 30000 # 控制一个pool里面minIdle的对象多久之后驱逐(回收), 默认1800000毫秒即30分钟 num-tests-per-eviction-run: 3 # 每次释放idle object前执行validation test的数量 time-between-eviction-runs-millis: 60000 # 表示idle object evitor两次扫描之间要sleep的时间 test-on-borrow: true # 借用连接的时候检测有效性, 默认false test-on-return: false # 归还连接的时候检测有效性, 默认false test-while-idle: true # idle状态下也进行有效性检测, 默认false timeout: 5000ms # Redis服务器响应命令的最长等待时间(单位:毫秒) ``` 此外,还可以考虑启用Sentinel模式来进行故障转移管理以及集群部署方案提升系统的可用性和伸缩能力。当主节点发生故障时,哨兵会自动选举新的主节点继续提供服务,从而保障业务连续性不受影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值