Hyperf 3.1中connect_timeout建议设为3.0秒而非默认10.0秒,因10秒易掩盖Redis/MySQL宕机、防火墙拦截等异常,导致协程无谓等待;3.0秒兼顾局域网稳定性与故障快速发现,且需配合wait_timeout≤async_queue.php中timeout,异步队列Redis池须单独配置pool=>'queue'。

Hyperf 3.1 中连接池的 connect_timeout 建议设为 3.0 秒(即 3000 毫秒),这是兼顾稳定性与响应性的常用值。
为什么是 3.0 而不是默认 10.0?
默认值 10.0 秒偏大,容易掩盖网络或服务端异常:比如 Redis 或 MySQL 实例宕机、防火墙拦截、DNS 解析失败时,协程会无谓等待 10 秒才报错,拖慢整体响应,也影响故障快速发现。设为 3.0 后,多数正常网络环境(局域网或同可用区)能稳定建立连接,同时给故障留出明确超时边界。
不同组件的适配建议
-
Redis 连接池:设
'connect_timeout' => 3.0,配合'wait_timeout' ≤ async_queue.php 中的 timeout(如设为 2.0),避免消费者启动卡住 -
MySQL 连接池(Swow 环境):必须重配,推荐
'connect_timeout' => 5.0(Swow 对连接建立更敏感,略放宽更稳妥) -
异步队列专用 Redis 池:务必单独配置
'pool' => 'queue',connect_timeout仍用 3.0,不可复用 HTTP 业务池
需要避开的坑
- 不要全局统一设成 0.5 或 1.0:内网延迟抖动时易误判,导致连接频繁重建,反增开销
- Swow 环境下若沿用旧 Swoole 风格配置(如保留原
pool数组),connect_timeout实际不生效 - 若使用云数据库(如阿里云 RDS、腾讯云 CDB),需确认其连接建立耗时——部分代理层可能引入额外延迟,可临时调至 4.0 观察











