记录php项目遇到502和504 Bad Gateway问题

时间:2024-04-09 07:53:14

502和504问题都可以直接通过重启php来解决,只能缓解问题,没能预防问题。

504可能原因:

1、连接时间过短,调整下面3个参数:
fastcgi_connect_timeout 6000;
fastcgi_send_timeout 6000;
fastcgi_read_timeout 6000;

502可能原因:

nginx报错日志:
recv() failed (104: Connection reset by peer) while reading response header from upstream

connect() failed (110: Connection timed out) while connecting to upstream

connect() failed (111: Connection refused) while connecting to upstream

查了资料,应该是以下两个问题:
1、网站的页面占用缓冲区过大,应该调大改值,如:
fastcgi_buffers 8 128k;
fastcgi_buffer_size 128k;
fastcgi_busy_buffers_size 256k;

2、连接时间超时,应该调大改值,如:
proxy_buffers 4 128k;
proxy_busy_buffers_size 128k;
proxy_connect_timeout 600s;
proxy_read_timeout 1200;
proxy_send_timeout 1200;
keepalive_timeout 65s;

3、连接数过大,超出默认的5个,报错信息:
[pool www] server reached pm.max_children setting (5), consider raising it
记录php项目遇到502和504 Bad Gateway问题
解决方法:调大下面的数值
pm.max_children = 30 //设置子进程最大数值
pm.start_servers = 10 //php-fpm启动起始进程数
pm.min_spare_servers = 10 //php-fpm的最小空闲进程数
pm.max_spare_servers = 24 //php-fpm的最大空闲进程数
pm.max_requests = 500 //所有子进程重启时间

4.允许一个用户ip最大并发访问接口数量

在http{}里面写
limit_req_zone $binary_remote_addr zone=allips:50m rate=50r/s;

在serve{}里面写
limit_req zone=allips burst=50 nodelay;

目前没出问题,待完善(1026)