hyperf docker 环境中连接池数量由应用配置决定,不因容器部署自动变化;可通过 config/autoload/redis.php 等文件设置 min_connections 和 max_connections,并用 php bin/hyperf.php pool:show 查看运行时状态。

在 Hyperf 的 Docker 环境中,连接池连接数(如 Redis、MySQL、HTTP Client 等)**不会因容器部署而自动变化**,其数值完全由 Hyperf 应用自身的配置决定。Docker 本身不干预或暴露连接池状态,你需要通过 Hyperf 提供的机制来查看或调试当前连接池的实际使用情况。
确认连接池配置是否生效
Hyperf 的连接池参数在 config/autoload/databases.php(MySQL)、config/autoload/redis.php 或 config/autoload/http_client.php 中定义,关键字段包括:
- min_connections:空闲时保有的最小连接数
- max_connections:允许创建的最大连接数(即“连接池上限”)
- connect_timeout、wait_timeout 等:影响连接复用行为
例如 Redis 配置片段:
'default' => [
'host' => env('REDIS_HOST', 'redis'),
'port' => (int) env('REDIS_PORT', 6379),
'password' => env('REDIS_AUTH', null),
'database' => (int) env('REDIS_DB', 0),
'pool' => [
'min_connections' => 1,
'max_connections' => 32,
'connect_timeout' => 10.0,
'wait_timeout' => 3.0,
'heartbeat' => -1,
],
],
该配置表示 Redis 连接池最多可持 32 个连接。只要容器内应用正常启动且配置被加载,这个值就已生效。
运行时查看连接池实际占用状态
Hyperf 提供了 PoolManager 和命令行工具辅助观测。在容器内执行以下命令(需确保已安装 hyperf/command 组件):
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
docker exec -it your-hyperf-container php bin/hyperf.php pool:show
输出类似:
+----------+----------------+----------------+----------------+ | Name | Active | Idle | Waiting | +----------+----------------+----------------+----------------+ | redis | 5 | 3 | 0 | | mysql | 2 | 8 | 1 | +----------+----------------+----------------+----------------+
其中:
Active = 当前正在被协程使用的连接数
Idle = 空闲但未释放、可立即复用的连接数
Waiting = 正在等待获取连接的协程数量(若持续 > 0,说明连接池可能过小)
验证 Docker 网络是否影响连接池行为
有时连接数“上不去”,并非配置问题,而是服务不可达导致连接反复失败重建。请检查:
- Docker Compose 中
depends_on仅控制启动顺序,不保证服务就绪;建议在 Hyperf 启动脚本中加入健康检查(如 ping Redis) - 容器内能否
telnet redis 6379或nc -zv redis 6379连通 - Redis/MySQL 容器是否限制了最大连接数(如 MySQL 的
max_connections参数),这会间接导致 Hyperf 获取连接超时或降级
日志与监控辅助定位
开启连接池相关日志有助于观察连接获取行为:
// config/autoload/logger.php
'redis' => [
'driver' => \Hyperf\Logger\Driver\StdoutDriver::class,
'level' => 'debug',
],
当连接池紧张时,日志中会出现 Wait timeout for connection from pool 或 Connection created 等提示,结合 pool:show 输出即可判断瓶颈所在。










