宽屏模式

laravel 页面获取巨量授权, 执行1分钟左右后502

背景

巨量广告授权时, 有些广告账户中的广告账户有几万个, 授权时候会请求接口,并入库. 但是执行过程中,入库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
请先登录后发表评论
  • latest comments
  • 总共0条评论