nginx 504 Gateway Time-out

环境:PHP7.1,NGINX,Mysql
问题描述:
本地写了一个需要执行比较长时间的脚本,放到了php-fpm里面跑。用一个链接调用起这个脚本。发现第一次调用的时候,需要等比较久的时间,但是如果在执行期间再次请求这个链接。第二个请求的链接会返回504。甚至,直接在脚本最开始的地方中断都还是报 504.

但是如果请求其他链接,可以正常请求

nginx 返回码、、 504 Gateway Time-out

nginx 报错日志:
2018/06/13 09:53:48 [info] 530#0: *806 client timed out (60: Operation timed out) while waiting for request, client: 127.0.0.1, server: 0.0.0.0:80

问题的原因:
由于脚本执行时间较长。phpfpm 认为第二个请求与第一个请求一致。将第二个请求放到第一个的进程中去执行。导致这个问题。出现这个问题的解决办法,1️⃣尽量缩短脚本运行的时间,2️⃣同时将这种需要耗时的脚本以php-cli 方式运行~这种时候不会出现超时请款。

nginx常用超时时间~

client_header_timeout 指定等待client发送一个请求头的超时时间 NGINX 返回408
client_body_timeout 指定请求体返回超时时间 NGINX 返回408
keepalive_timeout HTTP 有一个 KeepAlive 模式,它告诉 webserver 在处理完一个请求后保持这个 TCP 连接的打开状态。若接收到来自客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性。若将它设置为 0,就禁止了 keepalive 连接。

lingering_timeout 可以理解为TCP连接关闭时的SO_LINGER延时设置,默认5s
resolver_timeout 域名解析超时,默认30s

send_timeout时间 发送数据至客户端超时, 默认60s, 如果连续的60s内客户端没有收到1个字节, 连接关闭
proxy_connect_timeout时间 定义与代理服务器建立连接的超时时间。应该指出的是,这个超时通常不能超过75秒。
proxy_read_timeout 定义从代理服务器读取响应的超时时间。超时指在两次连续的读操作之间设置,
proxy_send_timeout 设置向代理服务器发送请求的超时时间。超时只在两次连续写入操作之间设置

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值