【问题标题】:Understanding NGINX's fastcgi_read_timeout了解 NGINX 的 fastcgi_read_timeout
【发布时间】:2020-03-11 12:32:04
【问题描述】:

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

来自the documentation

fastcgi_read_timeout

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

到目前为止一切顺利。但是后来……

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

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

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

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

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

【问题讨论】:

    标签: nginx timeout fastcgi


    【解决方案1】:

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

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

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

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

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

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

    max_execution_time in php.ini

    fastcgi_param PHP_VALUE "max_execution_time=1000";
    

    在你的 NGINX 配置中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多