先分清:到底是谁超时
请求到达借到连接拿到响应
- 借连接等待:池满时,请求先排队。实验里的“连接超时”就是这段等待预算,可映射到
BlockingConnectionPool(timeout=...)。 - 命令执行:借到连接以后,
socket_timeout约束读写 Redis 响应的等待时间;它不是总请求时限。 - TCP 建连:
socket_connect_timeout约束新连接建立过程,和“池里暂时没有空闲连接”不是一回事。 - 相对结果:本实验把所有请求同时到达、命令耗时固定,并忽略网络抖动、连接重建与事件循环调度,适合比较参数方向,不等于生产压测数字。
为什么连接数不是越多越好?
连接过少会把压力留在应用队列里;连接过多则可能把压力一股脑推给 Redis,增加文件描述符、服务端连接和并发工作的负担。更可靠的做法,是结合实例容量、命令延迟分布和应用并发上限一起测量。