首页 > 解决方案 > 了解 NGINX 的 fastcgi_read_timeout

问题描述

我正在“微调”一个通过 NGINX 提供的 PHP Web 应用程序,其中 php-fpm 作为 FastCGI 服务器。

文档中

fastcgi_read_timeout

定义从 FastCGI 服务器读取响应的超时时间。

到目前为止,一切都很好。但是之后...

超时仅在两个连续的读取操作之间设置,而不是为整个响应的传输设置。

PHP 脚本开始发送数据(nginx 读取)然后暂停(计算时间)然后发送更多数据(nginx 读取)。如果暂停持续时间超过指定时间,则断开连接。

这是正确的解释还是我遗漏了什么?

exaclty 是什么意思“两个读取操作之间”?

“整体反应”的持续时间不是很重要吗?什么参数为此设置了限制?

标签: nginxtimeoutfastcgi

解决方案


PHP 脚本开始发送数据(nginx 读取)然后暂停(计算时间)然后发送更多数据(nginx 读取)。如果暂停持续时间超过指定时间,则断开连接。

我认为这是一个正确的解释。
而且很容易测试:编写一个简单的 php 脚本,在s 和essleep之间添加一些 s 。(目前不能自己做)。echoflush

“整体反应”的持续时间不是很重要吗?

就我个人而言,这种fastcgi_read_timeout方法更有吸引力:

  • 如果您的服务器处于固定超时的高负载下,它肯定会不时出现故障。用户会被激怒,他们会刷新......发送另一个请求......你的服务器会更加窒息,永远不会满足用户的任何请求。
  • 但是,如果无论负载如何,您的服务器都显示它仍然处于活动状态并努力满足客户端的请求,那么由他们决定等待或中止。好多了!

什么参数为此设置了限制?

max_execution_timephp.ini

fastcgi_param PHP_VALUE "max_execution_time=1000";

在你的 NGINX 配置中


推荐阅读