502错误的网关

Top*_*ort 1 nginx fpm

我经常遇到的问题是,如果我转到使用php的服务器上的页面,则会收到“ 502 Bad Gateway”错误。

错误日志:

/var/log/nginx/error.log 每分钟显示大约3个此错误的副本:

2016/08/27 15:07:22 [error] 17309#0: *53554 connect() to unix:/var/run/php5-fpm.sock 
failed (11: Resource temporarily unavailable) while connecting to upstream, client: 
[dedicated server], server: localhost, request: "POST /xmlrpc.php HTTP/1.0", 
upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: [my IP address]
Run Code Online (Sandbox Code Playgroud)

来自nginxphp5-fpm进程的CPU负载有时很巨大(超过100%),但有时却很明显(2%),很少那么微不足道。

我在syslog(!)中看到了很多东西:

Aug 27 15:17:21 [site] avahi-daemon[871]: Invalid response packet from host 
[some IP address that isn't mine and nslookup never heard of].
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的事情:

  • apt-get update
  • 删除并重新安装php5php5-cgiphp5-fpm
  • 确保apache2系统上没有运行
  • 将此添加nginx.conf,在http {...内}

    fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300;

  • 确保运行的同一用户nginx拥有/var/run/php5-fpm.sock。与listen.ownerlisten.group中引用的所有者相同/etc/php5/fpm/pool.d/www.conf

  • 尝试将对该套接字的引用更改为TCP / IP套接字:

    /etc/nginx/sites-available/default包含fastcgi_pass unix:127.0.0.1:9000; /etc/php5/fpm/pool.d/www.conf线listen = 127.0.0.1:9000;

    由于这使得所有php页面均无法正常工作,因此我恢复了该更改。

  • 确保我没有在nginx.conf设置中禁用PHP文件。我不是,有时它可以工作,所以不可能。

php5-fpm设置:

我怀疑这是php5占用内存或CPU时间的问题,因为(a)经常这样做,并且(b)如果我没有收到504错误,则在使用php的任何页面上加载时间都很慢。我认为这是/etc/php5/fpm/pool.d/www.conf文件的相关部分:

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
Run Code Online (Sandbox Code Playgroud)

那么:我还应该尝试什么?TIA。

Sat*_*tys 5

您可以检查以下内容,

1- sudo service php5-fpm status,如果没有运行,尝试启动

2-在将套接字更改为tcp / ip的同时,删除unix,即在/etc/nginx/sites-available/default文件中,将php块中的更改fastcgi_pass unix:/var/run/php5-fpm.sock;fastcgi_pass 127.0.0.1:9000;和将/etc/php5/fpm/pool.d/www.conf文件中的更改listen = /var/run/php5-fpm.socklisten = 127.0.0.1:9000

3-尽量加大过程管理为PHP,即pm.max_children=40pm.start_servers = 10pm.min_spare_servers = 5pm.max_spare_servers = 10

4-从nginx.conf关闭keepalive连接

5- 如果可能的话,尝试实现缓存(针对几乎静态的内容完成缓存,以便所有请求都不会打扰php)。