Hyperf的Db组件协程配置主要在config/autoload/databases.php中完成,通过pool子数组控制协程行为,关键参数包括max_connections、max_idle_time、wait_timeout等,无需修改driver或安装pdo_mysql扩展。

Hyperf 的 Db 组件协程配置主要在 config/autoload/databases.php 文件里修改。
这个文件定义了所有数据库连接的驱动、凭证和连接池参数,其中协程行为由 pool 子数组控制,而不是靠额外扩展或手动切换驱动。
关键配置位置示例(databases.php 中 mysql 部分):
'mysql' => [
'driver' => env('DB_DRIVER', 'mysql'),
'host' => env('DB_HOST', 'localhost'),
'port' => (int) env('DB_PORT', 3306),
'database' => env('DB_DATABASE', 'hyperf'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => env('DB_CHARSET', 'utf8mb4'),
'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
'prefix' => env('DB_PREFIX', ''),
'strict' => true,
'pool' => [
'min_connections' => 1,
'max_connections' => 32,
'connect_timeout' => 10.0,
'wait_timeout' => 3.0,
'heartbeat' => -1,
'max_idle_time' => 60.0,
],
],需要关注的协程相关参数:
-
max_connections:最大并发连接数,直接影响高并发时能否拿到连接。设太小会卡在
wait_timeout;设太大可能压垮 MySQL。 - max_idle_time:空闲连接自动回收时间(秒),避免连接长期闲置占用资源。
-
wait_timeout:协程等待连接池分配连接的最长时间,超时抛异常,建议保持默认
3.0或略调高。 -
heartbeat:设为
-1表示禁用心跳检测,协程环境下通常不需要,启用反而增加开销。 -
min_connections:服务启动时预热的最小连接数,设为
0可节省冷启动资源,但首次请求稍慢。
不需要改的地方:
- 不用改
driver为swoole_mysql—— Hyperf 3.x 默认已自动适配协程版 PDO,只要 Swoole 已启用且版本 ≥5.0,底层就会走协程路径。 - 不用安装额外扩展(如
pdo_mysql同步扩展)来“支持协程”,反而要确保它不干扰协程 Hook。
验证是否生效:
运行 php bin/hyperf.php db:show 可查看当前连接池状态;压测时观察 swoole_server->stats() 中的 db_pool_used_connections 指标是否随请求波动,就能确认协程连接池已在工作。


















