巨量广告授权时, 有些广告账户中的广告账户有几万个, 授权时候会请求接口,并入库. 但是执行过程中,入库20000左右的账户后, 就会报错 502 bad gateway .
调整nginx配置, 调整后问题依旧.
server
{
#其它配置....
proxy_connect_timeout 1800s; # nginx后端服务器连接超时时间
proxy_send_timeout 1800s; # 设置发送超时时间
proxy_read_timeout 1800s; # 设置读取超时时间
send_timeout 1800s;
fastcgi_buffer_size 512k;
fastcgi_buffers 4 512k;
fastcgi_busy_buffers_size 512k;
fastcgi_temp_file_write_size 512k;
}
调整 php-fpm.conf 执行时间, 问题也未得到解决:
request_terminate_timeout = 300
排查发现nginx的 keepalive_timeout 为 65
, 修改为 300 , 未解决.
再次修改php-fpm
pm.max_children = 100 # 最大子进程数,一般一个 php-cgi 大概消耗20M内存, 根据服务器内存配置调整
pm.start_servers = 20 # 启动时创建的进程数,
pm.max_requests = 10240 # 最大请求数, 一个php-cgi处理的请求数达到这个数, php-fpm 就会重启这个进程, 所以高并发时可能就会导致 502 错误.
pm.min_spare_servers = 10 # 保证空闲进程数最小值, 空闲进程数小于这个值,就创建新的进程
pm.max_spare_servers = 30 # 空闲进程数最大值, 大于这个值就进行清理
request_terminate_timeout = 300 # 单个请求的超时时间. 超时后会终止进程, nginx 发现信号断了, 就会返回 502 给客户端(请求别人api时, 可能请求时间就会比较长. 这个值就适当提高).
request_slowlog_timeout = 30 # 请求超过30s的记录慢日志
本文为Larwas原创文章,转载无需和我联系,但请注明来自larwas博客 https://larwas.com
最新评论