虽然数据库设置了最大连接数是2000,但是当连接数达到1000时。再也不能接受连接,而是报错:could not fork new process for connection: Resource temporarily unavailable。
这个错误的原因是操作系统单个用户的进程数量限制。报错,但不用记录到PG的日志中。
例如
@H_301_8@[postgres@localhost ~]$ ps -ef | grep postgres
@H_301_8@postgres 2704 1 0 16:10 pts/1 00:00:00 /usr/local/pgsql941/bin/postgres
@H_301_8@.....
主进程号是2704
@H_301_8@# cd /proc/2704
@H_301_8@# cat limits
@H_301_8@Limit Soft Limit Hard Limit Units
@H_301_8@Max cpu time unlimited unlimited seconds
@H_301_8@Max file size unlimited unlimited bytes
@H_301_8@Max data size unlimited unlimited bytes
@H_301_8@Max stack size 10485760 unlimited bytes
@H_301_8@Max core file size unlimited unlimited bytes
@H_301_8@Max resident set unlimited unlimited bytes
@H_301_8@Max processes 1024 131072 processes
@H_301_8@Max open files 131072 131072 files
@H_301_8@Max locked memory 51200000000 51200000000 bytes
@H_301_8@Max address space unlimited unlimited bytes
@H_301_8@Max file locks unlimited unlimited locks
@H_301_8@Max pending signals 256607 256607 signals
@H_301_8@Max msgqueue size 819200 819200 bytes
@H_301_8@Max nice priority 0 0
@H_301_8@Max realtime priority 0 0
@H_301_8@Max realtime timeout unlimited unlimited us
可以看到Max processes限制是1024
@H_301_8@# echo -n "Max processes=131072:131072" > limits
@H_301_8@# cat limits
@H_301_8@Limit Soft Limit Hard Limit Units
@H_301_8@Max cpu time unlimited unlimited seconds
@H_301_8@Max file size unlimited unlimited bytes
@H_301_8@Max data size unlimited unlimited bytes
@H_301_8@Max stack size 10485760 unlimited bytes
@H_301_8@Max core file size unlimited unlimited bytes
@H_301_8@Max resident set unlimited unlimited bytes
@H_301_8@Max processes 131072 131072 processes
@H_301_8@Max open files 131072 131072 files
@H_301_8@Max locked memory 51200000000 51200000000 bytes
@H_301_8@Max address space unlimited unlimited bytes
@H_301_8@Max file locks unlimited unlimited locks
@H_301_8@Max pending signals 256607 256607 signals
@H_301_8@Max msgqueue size 819200 819200 bytes
@H_301_8@Max nice priority 0 0
@H_301_8@Max realtime priority 0 0
@H_301_8@Max realtime timeout unlimited unlimited us
不要直接编辑这个文件,限制问题解决了,不会再报资源不足的错误.
如果需要重启也生效,则需要更改文件:/etc/security/limits.conf 和 /etc/security/limits.d/90-nproc.conf 这两个文件都有对最大进程数的限制。具体两个如何配合使用,还请大神指点。我是把两个文件的限制都改成一样的,重启生效。