nginx 504 Gateway Time-out如何处理

今天程序在执行一项excel导出任务的时候 出现了nginx超时的提示

nginx 504 Gateway Time-out

排查过程:

查看该任务 发现内容是一个数据量20000条信息 每条信息有50个字段 在执行导出为excel的时候 出现了该问题

执行时间大概在10分钟左右就出现超时

分析:

Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI
通常以下几种情况会导致这个问题:
1.程序在处理大量的数据,或者有死循环之类的问题
2.创建数据库之类的连接因为某些原因连接不上,然后没有超时失败的机制,导致一直在创建连接
3.程序中有一些http请求,这些请求执行时间过长,导致超时

分别查看nginx及php的相关配置查看timeout具体参数

找到nginx配置文件

#修改Nginx配置:
fastcgi_connect_timeout 1200s;#原设置为300s
fastcgi_send_timeout 1200s;#原设置为300sfastcgi_read_timeout 1200s;#原设置为300sfastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;

这里最主要的设置是前三条,即

fastcgi_connect_timeout #同 FastCGI 服务器的连接超时时间,默认值60秒,它不能超过75秒;
fastcgi_send_timeout #Nginx 进程向 FastCGI 进程发送 request ,整个过程的超时时间,默认值60秒;
fastcgi_read_timeout #FastCGI  进程向  Nginx  进程发送 response ,整个过程的超时时间,默认值60秒;

php配置文件

php.ini
max_execution_time = 300s;PHP 脚本的最大执行时间,但是,在 php-cgi(php-fpm) 中,该参数不会起效。
php-fpm
request_terminate_timeout = 0; #设置单个请求的超时中止时间.设置为0 即一直执行下去直到程序结束 不会超时

修改完上述设置之后 再次执行发现没有出现504超时提示,但是页面空白,并没有文件导出。应该还是php在执行过程中超时

没办法 查看php代码并没有发现有执行时间的设置即:set_time_limit

php函数执行时间 查到以下内容:

set_time_limit

本函数用来配置该页最久执行时间。默认值是 30 秒,在 php.ini 中的 max_execution_time 变量配置,若配置为 0 则不限定最久时间。

当执行到该函数时,才开始计算。例如,若默认是 30 秒,而在执行到该函数前已执行了 25 秒,而用本函数改为 20 秒,则该页面最长执行时间为 45 秒。

最后在php函数里 添加了这样一行:

set_time_limit(0);

再次执行,结果可以了。

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/6387.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚的头像重蔚管理团队
上一篇 2018年4月13日 09:33
下一篇 2018年4月13日 09:45

相关推荐

  • PHP中如何进行人机交互和生物特征识别。

    PHP是一种广泛使用的编程语言,它在Web应用程序的开发中具有很大的用途。在PHP中,人机交互和生物特征识别是两个非常重要的方面,它们可以被广泛应用于各种Web应用程序的开发中。本文将探讨PHP中人机交互和生物特征…

    2023年5月23日
    07
  • PHP微信开发:如何实现群发消息发送记录

    随着微信成为了人们生活中越来越重要的一个通讯工具,其敏捷的消息传递功能迅速受到广大企业和个人的青睐。对于企业而言,将微信发展为一个营销平台已经成为趋势,而微信开发的重要性也逐渐凸显。在其中,群发功能…

    2023年5月18日
    02
  • 在PHP中实现微信商城订单管理

    随着电子商务的发展,越来越多的商家选择在微信平台上开设自己的商城。然而,如何高效地管理订单成为商家面临的一个难题。PHP作为目前最流行的开发语言,在实现微信商城订单管理方面也有着很好的表现。接下来,本文…

    2023年5月18日
    03
  • PHP实现邮件发送状态的实时查询功能。

    PHP实现邮件发送状态的实时查询功能随着电子邮件的广泛普及,邮件发送已经成为日常工作中不可或缺的一个环节。但是,由于网络问题、邮件服务器故障等原因,有时候邮件发送会失败。当邮件发送失败时,我们常常需要查…

    2023年5月23日
    02
  • 详解php中抓取网页内容的实例

    php中抓取网页内容的实例详解方法一:使用file_get_contents方法实现 $url = "http://news.sina.com.cn/c/nd/2016-10-23/doc-ifxwztru6951143.shtml"; $html = file_get_contents($url); //如果出现中文乱…

    2022年6月15日
    0180
  • php自学教程—php运算符的错误抑制符

    错误抑制符 说明:@,目的屏蔽一些不重要错误。 作用:所有的网站不可能没有bug的时候上线。 执行运算符 说明:``,把数据用反引号括起来后,就是执行了。 递增递减运算符 说明:自己加一或自己减一,符号:++ -- …

    2017年12月6日 PHP自学教程
    0237
  • PHP与数据库队列的集成。

    随着现代Web应用的发展,越来越多的需要将任务异步处理,以提高网站的性能和用户体验。其中一种常见的方式是使用队列系统,将需要处理的任务排队,然后由后台进程异步处理。而PHP和数据库都是Web开发中广泛使用的工…

    2023年5月21日
    08
  • php如何使用Requests进行HTTP请求。

    在Web开发中,HTTP请求是一个非常重要的环节。在PHP开发中,有很多种方式可以进行HTTP请求,其中一种比较好用的就是使用Requests库进行请求。本文将介绍如何在PHP中使用Requests进行HTTP请求。什么是Requests库?Re…

    2023年6月3日
    03

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息