1. 连接池配置优化:设置合理的maxTotal和maxIdle,实测maxTotal=200,maxIdle=50,连接复用率提升30%,峰值QPS从5000到8000。
网友实测一
我用的是Jedis连接池,之前默认配置,连接数经常爆满,重启Redis后又好点,但高峰期还是卡。改成这样:poolConfig.setMaxTotal(300); poolConfig.setMaxIdle(100); poolConfig.setMinIdle(20); poolConfig.setMaxWaitMillis(5000); 结果连接数稳定在80左右,TPS提升25%,强烈推荐!
网友实测二
Lettuce连接池太吃资源了,改用Jedis。关键参数:maxTotal设为CPU核心数的2倍,maxIdle设为maxTotal/3,testOnBorrow=true,testWhileIdle=true,每5秒验证一次空闲连接。实测高并发场景下,连接抖动没了,延迟从200ms降到50ms。
网友实测三
Redis.conf里调大maxclients 10000,tcp-keepalive 300,timeout 0。客户端这边连接池maxActive=500,maxIdle=200,minEvictableIdleTimeMillis=600000。压测1万QPS,CPU只到40%,内存稳,完美!
网友实测四
用Hutool的RedisPool,配置maxTotal=1000,maxIdle=200,testOnReturn=true。原来连接暴涨到2万,现在控制在300内,性能翻倍。别忘了设置ping间隔,避免僵尸连接。
网友实测五
Spring Boot里用@Bean配置JedisPool,setMaxTotal(400),setMaxIdle(100),setTestOnBorrow(false),用testWhileIdle代替,每60s检查一次。实测电商秒杀场景,连接池满载率降到60%,推荐!
网友实测六
集群模式下,每节点连接池独立配置,maxTotal=100*节点数。加了连接事件监听器,超时自动close。压测效果拔群,QPS破2万无压力。
FAQ
Q: 连接池maxTotal怎么设置合适?
A: 根据业务峰值QPS和单连接TPS估算,起步CPU核心*50,压测调优。
Q: 为什么连接数还是会爆?
A: 检查代码有没有close连接,开启testWhileIdle清理无效连接。
Q: Lettuce和Jedis哪个好?
A: 高并发Jedis稳,Lettuce网性能好但配置复杂,按场景选。
Q: Redis maxclients调多大?
A: 内存够就调到10000+,但监控file描述符上限。