su:/ bin / bash:资源暂时不可用

无法将用户切换到postgres。

postgres用户的ulimit设置设置了合理的限制。 我们没有达到最大。

/ var / log / messages中没有错误。

错误:

BETA -bash-4.2# sudo su - postgres su: /bin/bash: Resource temporarily unavailable 

设置:

 BETA -bash-4.2# ps -auxww | grep -i postgr | wc -l 503 BETA -bash-4.2# lsof | grep -i postgr | wc -l 35225 BETA -bash-4.2# 

Ulimit postgres进程。

 BETA -bash-4.2# cat /proc/26230/limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 8388608 unlimited bytes Max core file size 0 unlimited bytes Max resident set unlimited unlimited bytes Max processes 256580 256580 processes Max open files 1024 4096 files Max locked memory 65536 65536 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 256580 256580 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us 

用netstat

 BETA -bash-4.2# netstat -plan | grep -i post | grep ESTABLISHED | wc -l 496 BETA -bash-4.2# 

Ulimit设置

 BETA -bash-4.2# cat /etc/security/limits.d/postgres_limits.conf # Limits settings for postgres postgres soft nofile 4096 postgres hard nofile 4096 postgres soft nproc 400 postgres hard nproc 400 

重新启动postgres后,我能够进入。

postgres用户的资源util。

 BETA -bash-4.2# netstat -plan | grep -i post | grep ESTABLISHED | wc -l 1 BETA -bash-4.2# BETA -bash-4.2# lsof | grep -i postgr | wc -l 309 BETA -bash-4.2# ps -auxww | grep -i postgr | wc -l 8 BETA -bash-4.2# 

重新启动postgres不是一个长期的解决scheme,你会再次达到极限,除非你在服务器上有物理资源限制,比如内存。 在问题期间,postgres用户打开的进程数(nproc)是503,打开的文件(nofile)的估计数是35225,而你的postgres_limits.conf显示你已经把nproc设置为400,而nofile只有4096。在你的数据上,你需要增加这两个参数。