You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel生产环境连接PostgreSQL超时问题求助

Laravel生产环境PostgreSQL连接超时(SQLSTATE[08006] [7])排查与解决

针对本地环境数据库连接正常、生产环境所有涉及数据库查询的路由均报超时的问题,按以下步骤逐一排查:

1. 验证生产服务器与数据库服务器的网络连通性

生产服务器必须能访问数据库的5432端口,执行以下命令测试:

telnet 你的DB_HOST_IP 5432
# 或用nc命令
nc -zv 你的DB_HOST_IP 5432

若连接失败,检查:

  • 数据库服务器的防火墙/安全组是否开放5432端口给生产服务器IP
  • 生产服务器的防火墙是否允许出站访问5432端口

2. 检查PostgreSQL的监听配置

登录数据库服务器,修改postgresql.conf(路径通常为/var/lib/postgresql/{版本}/main/postgresql.conf):
找到listen_addresses项,将其从localhost改为*(允许所有IP)或指定生产服务器IP:

listen_addresses = '*'

修改后重启PostgreSQL服务:

sudo systemctl restart postgresql

3. 确认数据库用户的访问权限

登录PostgreSQL控制台,检查用户允许的访问IP:

SELECT usename, host FROM pg_user;

若用户对应的host不是生产服务器IP或%(允许所有IP),执行以下命令修改:

-- 允许指定IP访问
ALTER USER 你的DB_USERNAME WITH LOGIN PASSWORD '你的DB_PASSWORD' HOST '生产服务器IP';
-- 允许所有IP(生产环境建议指定具体IP保障安全)
ALTER USER 你的DB_USERNAME WITH LOGIN PASSWORD '你的DB_PASSWORD' HOST '%';

4. 调整Laravel数据库连接超时参数

在config/database.php的pgsql配置数组中添加超时设置:

'pgsql' => [
    'driver' => 'pgsql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '5432'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'charset' => 'utf8',
    'prefix' => '',
    'prefix_indexes' => true,
    'search_path' => 'public',
    'sslmode' => 'prefer',
    // 新增连接超时配置
    'options' => extension_loaded('pdo_pgsql') ? array_filter([
        PDO::ATTR_TIMEOUT => 30, // 连接超时时间(秒)
    ]) : [],
],

修改后清除配置缓存:

php artisan config:clear

5. 检查生产环境PHP扩展

确认生产环境已安装pdo_pgsql扩展,执行命令查看:

php -m | grep pdo_pgsql

若未安装,根据系统环境安装:

  • Ubuntu/Debian:sudo apt-get install php-pgsql
  • CentOS/RHEL:sudo yum install php-pgsql
    安装后重启Web服务(如Nginx/Apache)和PHP-FPM:
sudo systemctl restart nginx php-fpm

6. 排查数据库服务器负载与连接数

登录数据库服务器,检查当前连接数:

SELECT count(*) FROM pg_stat_activity;

若连接数接近或超过postgresql.conf中max_connections的默认值(100),可:

  • 杀掉闲置连接:SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE state = 'idle';
  • 修改max_connections参数并重启PostgreSQL(需根据服务器配置调整合理值)

内容的提问来源于stack exchange,提问作者Felipe Pereira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 17:15:40