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

PostgreSQL 16.2(AIX+PowerHA)出现“Resource temporarily unavailable”问题求助

关于PostgreSQL 16.2在AIX PowerHA环境下连接报错的排查与解决思路

服务器环境:配置PowerHA的AIX服务器,源码编译安装PostgreSQL 16.2;硬件为64GB内存、1颗Power10(s1024)处理器;日常内存平均占用20GB、CPU占用30%;部署5个小型数据库(最大仅数GB),存在大量客户端同时连接场景。

高峰时段PostgreSQL日志出现错误:
could not fork new process for connection: Resource temporarily unavailable
但系统日志与性能数据未显示资源饱和。

现有配置信息

PostgreSQL内存相关配置

- Memory -
shared_buffers = 1GB                    # min 128kB
                                        # (change requires restart)
#huge_pages = try                       # on, off, or try
                                        # (change requires restart)
#huge_page_size = 0                     # zero for system default
                                        # (change requires restart)
#temp_buffers = 8MB                     # min 800kB
#max_prepared_transactions = 0          # zero disables the feature
                                        # (change requires restart)
# you actively intend to use prepared transactions.
work_mem = 16MB                         # min 64kB
#hash_mem_multiplier = 2.0              # 1-1000.0 multiplier on hash table work_mem
maintenance_work_mem = 16MB             # min 1MB
#autovacuum_work_mem = -1               # min 1MB, or -1 to use maintenance_work_mem
#logical_decoding_work_mem = 64MB       # min 64kB
#max_stack_depth = 2MB                  # min 100kB 

系统ulimit配置

core file size              (blocks, -c) unlimited
data seg size               (kbytes, -d) unlimited
file size                   (blocks, -f) unlimited
max memory size             (kbytes, -m) unlimited
open files                          (-n) unlimited
pipe size                (512 bytes, -p) 64
stack size                  (kbytes, -s) unlimited
cpu time                   (seconds, -t) unlimited
max user processes                  (-u) unlimited
virtual memory              (kbytes, -v) unlimited

解决思路

  • 检查AIX系统进程限制:虽然ulimit -u显示unlimited,但AIX的系统级全局进程参数maxuproc(可通过lsattr -E -l sys0 -a maxuproc查看)、或是/etc/security/limits中针对postgres用户的单独进程限制,都可能在高峰时触达阈值,需确认后调整。
  • 优化PostgreSQL连接配置:检查max_connections参数(当前配置未提供),该值决定最大并发连接数,过高会导致fork进程时触发系统隐式资源限制。结合硬件建议调整至合理范围,同时搭配pgbouncer连接池减少实际fork的进程数量。
  • 调整内存配置与AIX内核参数:当前shared_buffers仅1GB,64GB内存环境可调高至8-12GB,减少子进程私有内存占用;检查AIX的vmo参数,确保有足够虚拟内存预留,避免fork时临时内存不足。
  • 排查PowerHA资源限制:PowerHA可能对资源组内的进程数、内存有额外管控规则,需检查PowerHA资源配置,确认是否在高峰或切换场景下限制了postgres的资源使用。
  • 验证编译兼容性:源码编译PostgreSQL时,需确认是否添加了针对Power10与AIX的适配参数(如--with-aix),若缺少必要系统库或优化参数,可能导致fork操作异常,可尝试重新编译。
  • 高峰时段实时监控:用ps -ef | grep postgres | wc -l统计实时postgres进程数,搭配vmstat、iostat监控瞬时资源波动,排查是否有被平均数据掩盖的瞬时资源瓶颈。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 22:41:02