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

PostgreSQL持续出现‘could not connect to server: Connection refused’问题求助

问题成因分析与修复方案

从你提供的PostgreSQL日志里,能找到几个关键异常点,是导致间歇性连接拒绝的核心原因:

  1. IP地址绑定异常
    日志中反复出现:

    LOG: could not bind IPv4 address "10.1.4.26": Cannot assign requested address
    WARNING: could not create listen socket for "10.1.4.26"
    LOG: listening on IPv4 address "10.1.4.26", port 5432
    

    这说明服务器的10.1.4.26 IP地址存在间歇性不可用的情况,可能是网卡波动、DHCP导致IP变更、其他进程抢占该IP,使得PostgreSQL偶尔无法绑定此地址,进而对外拒绝连接。

  2. 逻辑复制启动器异常退出

    LOG: worker process: logical replication launcher (PID 13195) exited with exit code 1
    

    逻辑复制启动进程异常退出,可能引发PostgreSQL内部资源紊乱,甚至触发服务重启或连接中断。

  3. 存在管理员级别的连接终止命令

    FATAL: terminating connection due to administrator command
    

    有外部操作(可能是自动脚本、监控工具或误操作)触发了PostgreSQL的连接终止命令,导致服务间歇性中断。


诊断步骤

  • 监控IP地址稳定性

    • 持续执行ping 10.1.4.26,观察是否有丢包或间歇性不通的情况;
    • 执行ip addr查看该IP是否会周期性消失/重现,同时查看系统日志(/var/log/syslog或/var/log/messages)中关于网卡、IP配置的变更记录。
  • 排查逻辑复制状态

    • 连接PostgreSQL后执行:
      SELECT * FROM pg_replication_slots;
      SELECT * FROM pg_stat_replication;
      
      检查复制槽是否正常、主从同步状态是否稳定;
    • 查看pg_wal目录下的WAL日志是否堆积,若堆积过多会导致复制进程异常。
  • 检查自动操作脚本

    • 查看当前用户的定时任务:crontab -l;
    • 查看PostgreSQL的systemd服务配置:systemctl cat postgresql,确认是否有自动重启、健康检查等可能触发服务中断的配置;
    • 排查服务器上的监控工具、运维脚本,是否存在自动终止PostgreSQL进程的逻辑。
  • 监控资源与连接数

    • 执行SELECT * FROM pg_stat_activity;查看当前连接数,对比postgresql.conf中的max_connections参数,确认是否达到连接上限;
    • 用top、iostat监控服务器的CPU、内存、磁盘IO,排查是否存在资源耗尽导致服务无法响应的情况。

修复建议

  • 调整监听地址配置
    编辑postgresql.conf,修改listen_addresses参数:

    • 如果10.1.4.26不是必须对外提供服务的IP,改为仅监听本地:listen_addresses = 'localhost';
    • 如果需要保留该IP,将服务器网卡配置为静态IP,避免DHCP自动变更地址;同时确保没有其他进程占用5432端口(用ss -tulpn | grep 5432检查)。
  • 修复逻辑复制问题

    • 如果复制槽异常,执行SELECT pg_drop_replication_slot('slot_name');删除异常槽,重新创建;
    • 调整postgresql.conf中的复制相关参数:增大max_wal_senders、max_replication_slots,确保复制进程有足够资源;
    • 检查主从节点的网络连通性,避免复制过程中出现网络中断。
  • 移除异常自动操作
    禁用触发PostgreSQL终止命令的定时任务或脚本;调整监控工具的健康检查逻辑,避免误判服务状态而触发重启。

  • 优化连接管理

    • 如果是连接数达到上限,适当增大max_connections(注意:该参数会消耗内存,需根据服务器内存调整);
    • 部署连接池工具(如pgBouncer),减少PostgreSQL的连接压力,避免因连接耗尽导致拒绝连接。

内容的提问来源于stack exchange,提问作者shehinn p

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:23:09