postgresql无法分配请求的地址

我有一个网站与Nginx的,PHP的FMP,Postgresql和PGBouncer,它已经工作了一年多了。 昨天服务器进入不响应,重新启动后,它工作5或10分钟,之后没有响应和相同的错误信息:

2017/04/04 15:32:37 [error] 2532#0:* 31341 FastCGI在stderr中发送:“PHP消息:PHP警告:pg_connect():无法连接到PostgreSQL服务器:无法连接到服务器:无法分配请求的地址服务器是否在第21行的/usr/share/nginx/html/lib/postgresql.class.php中的主机“127.0.0.1”上运行,并接受端口6432上的TCP / IP连接?

我甚至恢复到上次工作configuration,它仍然是相同的(当我开始nginx,它的工作一两分钟,然后上面的错误)。

我检查了php-fpm日志,我遇到以下情况:

[04-Apr-2017 14:48:50]警告:[池www]似乎很忙(你可能需要增加pm.start_servers或pm.min / max_spare_servers),产卵8个孩子,有0个空闲,共24个孩子

[04-Apr-2017 14:48:59]警告:[池www]服务器达到pm.max_children设置(50),考虑提高它

在postgresql日志中,我发现这个:

提示:考虑增加configuration参数“max_wal_size”。

到目前为止我已经改变了以下参数

在php-fpm中:

pm.max_childeren from 50 to 100 pm.start_servers from 5 to 10 pm-min_spare_servers from 5 to 10 pm-max_spare_servers from 35 to 100 

在Postgresql中:

 mac_wal_size from 1GB to 2GB 

仍然没有运气! 我该怎么办?

你在这里几乎没有问题。 所有这些都是由许多连接引起的。

您需要添加某种监控,并检查您获得的请求数量。 当您手上有一些数字时,您将能够正确调整所有连接相关设置:

  • PHP-FPM
  • pgbouncer
  • PostgreSQL的
  • Linux的\ OS

我已经find了pgbouncer的一个很好的答案: https ://dba.stackexchange.com/questions/59650/pgbouncer-works-great-but-occasionally-becomes-unavailable

我相信,这是第二个(监测和缺乏数字是第一个)缺less解决scheme的一部分为您的问题。

简而言之,您现在获得更多的stream量,之前的工作configuration不足以处理它。