ngnix响应超时接口报错504 Gateway Time-out 处理

之前接口测试新增了根据文件(excel)来执行用例,excel中有多少行数据则执行多少次用例,今天执行100条数据时接口响应504,前端响应网络错误,检查服务器资源时看到后端django函数实际还是在运行的,这通常意味着你的请求已经成功发送到了服务器,但是服务器在尝试处理请求时未能在规定的时间内从另一个服务器(如上游服务器、数据库服务器或外部API)获得响应。这个错误通常不是由客户端(如使用Axios的你的应用程序)直接引起的,而是由服务器端的环境或配置问题导致的。

检查服务器配置,特别是与超时设置相关的配置(如Nginx的proxy_read_timeout

这里我设置了nginx的三个超时代理指令:

  1. proxy_connect_timeout:设置 Nginx 与上游服务器建立连接的超时时间。
  2. proxy_read_timeout:设置 Nginx 从上游服务器读取响应的超时时间。
  3. proxy_send_timeout:设置 Nginx 向上游服务器发送请求的超时时间。
  • proxy_connect_timeout:这个指令设置了Nginx尝试与上游服务器建立连接的超时时间。如果上游服务器响应很快且网络状况良好,这个值可以设置得较短,比如10秒或更少。但如果上游服务器有时需要较长时间来启动或响应,可能需要增加这个值。

  • proxy_read_timeout:这个指令设置了Nginx从上游服务器读取响应的超时时间。这是导致504错误的最常见原因,因此可能需要仔细调整这个值。如果上游服务器通常需要几秒钟来处理请求并返回响应,那么您可以将这个值设置为比实际处理时间稍长一些,比如30秒到2分钟。但是,如果上游服务器有时需要更长时间来处理请求(例如,因为进行了复杂的计算或查询了大型数据库),则您可能需要进一步增加这个值。

  • proxy_send_timeout:这个指令设置了Nginx向上游服务器发送请求的超时时间。通常,这个值不需要设置得太高,因为发送请求通常是一个快速的过程。但是,如果请求体非常大,或者网络状况不佳,您可能需要增加这个值。

于是我在nginx的docker容器中/etc/nginx/nginx.conf路径下设置nginx.conf文件新增以上三个指令:

由于我的文件中存在大量数据,而且后置脚本中涉及到数据库的查询、解密等操作,我这里设置proxy_read_timeout 为10分钟。

设置完成后通过nginx -s reload 重启nginx,发送请求,响应成功返回:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值