NGINX + PHP-FPM在30秒后超时

时间:2019-10-18 23:46:55

标签: php nginx timeout fastcgi

首先,我搜索并阅读了许多SO和其他网站。我已经尝试了所有方法,但是仍然会发生。

我对私人网站有一些长期运行的查询。某些查询需要2分钟以上的时间。我正在将PHP 7.2.19与OS Ubuntu 19.04,NGINX 1.15.9结合使用。

这是我更改的设置。

/etc/php/7.2/fpm/php.ini:max_execution_time = 300

/etc/php/7.2/fpm/pool.d/www.conf:request_terminate_timeout = 300

/ etc / nginx / sites-available / default:

client_header_timeout 300;
keepalive_timeout 300;
client_body_timeout 300;
send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_send_timeout 300;
fastcgi_connect_timeout 300;

基本上,所有内容都更改为5分钟,但30秒后我仍然得到Gateway timeout

我在台式机上尝试了Firefox,在iOS上尝试了Safari。两者都有完全相同的问题,因此我认为这与我的浏览器超时无关。

响应具有以下标头和正文。奇怪的是,标头中没有任何PHP或NGNIX的迹象。这对我来说没有意义,因为我希望即使超时,他们俩都可以发送其版本。

超时标题:

HTTP/1.1 504 Gateway Timeout
Content-Type: text/html; charset=UTF-8
Content-Length: 219

超时HTML正文:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>504</title>
<meta http-equiv="Cache-Control" content="no-cache"/>
</head>
<body>
<p>
Gateway Timeout 
</p>
</body>
</html>

我找不到造成此超时的原因。一切似乎都很好,除了当然的结果:)

最后,发生超时时,我在NGINX访问日志中看到499个状态代码。阅读后,我发现这意味着客户端已关闭连接,但是第二个答案here提到 client 可以表示FCGI服务器,不一定是浏览器。

我在此页面的应用程序代码使用Guzzle对相同的NGINX进行了一系列内部HTTP请求,以请求相同的代码。问题是,即使在浏览器中发生超时之后,经过一段时间,我仍然看到内部请求记录了200个状态代码,这意味着我的应用程序仍在运行该代码!即使浏览器显示超时,应用程序日志也显示它仍在运行。

我很困惑接下来要去哪里调查。

0 个答案:

没有答案