Nginx PHP-Fcgi中因PHP执行时间导致504 Gateway Timeout错误解决记录

 更新时间:2014年09月15日 11:33:03   投稿:junjie  
这篇文章主要介绍了Nginx PHP-Fcgi中因PHP执行时间导致504 Gateway Timeout错误解决记录,本文的解决方法得来不易,需要的朋友可以参考下

昨天,一个程序需要导出500条数据,结果发现到150条是,Nginx报出504 Gateway Timeout错误

经观察,发现大约30秒时超时,php.ini中执行时间配置已经是300秒:

复制代码 代码如下:

max_execution_time = 300

再查nginx的相关配置,无果。

写了一个php的测试页再测:

复制代码 代码如下:

echo 'aaa';
set_time_limit(0);
sleep(40);
echo 'aa';

依然超时,可以确定set_time_limit这个函数没生效。

再查php-fcgi的配置php-fpm.conf,下边这个设置疑似有问题:

复制代码 代码如下:

<value name="request_terminate_timeout">30s</value>

查官方文档:http://php-fpm.org/wiki/Configuration_File

复制代码 代码如下:

request_terminate_timeout - The timeout (in seconds) for serving a single request after which the worker process will be terminated. Should be used when 'max_execution_time' ini option does not stop script execution for some reason. Default: "5s". Note: '0s' means 'off'

大意是php中set_time_limit设置的时间内如果php还没执行完,则走此处的配置,也就是request_terminate_timeout=30秒。

先把这个参数改的和php中set_time_limit值一样,都是300秒,还不行,不理解为什么,如果高手知道请赐教。

最终把request_terminate_timeout关闭,程序可以正常执行了,问题解决:

复制代码 代码如下:

<value name="request_terminate_timeout">0s</value>

补充:如果前端的nginx服务器使用了upstream负载均衡,那个负载均衡配置中以下几个参数也需要相应修改:

复制代码 代码如下:

proxy_connect_timeout       300s;
proxy_send_timeout          300s;
proxy_read_timeout          300s;

相关文章

  • Nginx实现跨域使用字体文件的配置详解

    Nginx实现跨域使用字体文件的配置详解

    这篇文章主要给大家介绍了关于Nginx实现跨域使用字体文件的配置方法,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • Nginx获取客户端真实IP(real_ip_header)的实现

    Nginx获取客户端真实IP(real_ip_header)的实现

    在使用Nginx作为反向代理时,确保获取客户端真实IP是关键,通过配置real_ip_header和set_real_ip_from,Nginx可以正确解析X-Forwarded-For头部信息,并更新$remote_addr为客户端真实IP,下面就来具体介绍一下
    2024-10-10
  • 通过nginx实现访问服务器指定目录下图片资源

    通过nginx实现访问服务器指定目录下图片资源

    这篇文章为大家详细主要介绍了如何通过nginx实现访问服务器指定目录下图片资源,文中通过图文进行了详细的讲解,有需要的小伙伴可以了解下
    2023-10-10
  • Nginx proxy_set_header配置方式

    Nginx proxy_set_header配置方式

    这篇文章主要介绍了Nginx proxy_set_header配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 利用nginx解决cookie跨域访问的方法

    利用nginx解决cookie跨域访问的方法

    本篇文章主要介绍了利用nginx解决cookie跨域访问的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Nginx配置实现用IP灰度测试(不同用户ID)

    Nginx配置实现用IP灰度测试(不同用户ID)

    本文主要介绍了使用Nginx配置实现基于IP的灰度发布实验,以及如何通过不同用户ID测试灰度发布,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • Nginx服务器设置网站验证访问的方法

    Nginx服务器设置网站验证访问的方法

    这篇文章主要介绍了Nginx服务器设置网站验证访问的方法,通过设置密码来要求登录网站目录的用户进行验证,需要的朋友可以参考下
    2015-07-07
  • Nginx服务器Nginx.com配置文件详解

    Nginx服务器Nginx.com配置文件详解

    这篇文章主要介绍了Nginx服务器Nginx.com配置文件详解的相关资料,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • 如何在centos服务器上部署nginx容器

    如何在centos服务器上部署nginx容器

    这篇文章主要介绍了如何在centos服务器上部署nginx容器,首先下载nginx镜像,接下来导入镜像,查看导入的镜像,本文给大家介绍的非常详细,需要的朋友可以参考下
    2024-06-06
  • nginx各种代理配置大全

    nginx各种代理配置大全

    本文主要介绍了nginx各种代理配置大全,主要包括了路径配置,http跳转https,微信支付的校验等,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09

最新评论