即使超时设置为 600,仍会出现 504 网关超时的情况

即使超时设置为 600,仍会出现 504 网关超时的情况

我有以下关于 PHP 和 Apache 的未解决的问题。我有一个长时间运行的脚本,在运行 30 秒后总是返回 504 网关超时。但是,如果我检查/server-process,我可以看到请求仍在进行中。在被建议之前,我并不指望它是一个 cron 作业,因为这个漫长的过程应该在一分钟内完成,并且对于当前情况,我需要它在浏览器中运行。以下是我为服务器设置的内容:

/etc/apache2/apache2.conf
- Timeout 600

/etc/php/7.0/apache2/php.ini
- max_execution_time = 300
- max_input_time = 300

这是我的服务器信息:

root@izzystorage-core:~# lsb_release -r
Release:        16.04

root@izzystorage-core:~# apache2 -v
Server version: Apache/2.4.18 (Ubuntu)
Server built:   2017-09-18T15:09:02

root@izzystorage-core:~# php -v
PHP 7.0.22-0ubuntu0.16.04.1 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.22-0ubuntu0.16.04.1, Copyright (c) 1999-2017, by Zend Technologies

你们知道我的服务器出了什么问题吗?

编辑

  1. 我没有mod_proxy
  2. 这只是一台服务器,中间没有负载均衡器

答案1

我在 PHP 脚本中运行一个 Mysql 查询,该查询扫描大量数据并在 2 分钟内做出响应。我总是在 30 秒后收到 504 网关超时。在尝试了所有常用建议后,我最终明白问题出在我用于访问 PHP 脚本的 Open Shift 路由上。Open Shift 默认路由超时为 30 秒。我将路由注释更改为 5 分钟,成功了!详情请参见此处: https://stackoverflow.com/questions/47812807/openshift-service-proxy-timeout

答案2

经过几个小时调整Timeoutmax_execution_timemax_input_time参数和多个service apache2 restart无结果后,我恢复了原始参数(600、300、300)并使用重新启动了整个服务器shutdown -r now。服务器重新上线后,所有问题突然解决。

相关内容