php-fpm超时时间设置request_terminate_timeout分析

之前发现一个php配置之后关于返回500和502的问题,今天看到一个兄弟写的非常不错,记录一下。

php日志中有一条超时的日志,但是我request_terminate_timeout中设置的是0,理论上应该没有超时时间才对。

PHP Fatal error:  Maximum execution time of 30 seconds exceeded in ...

OK,先列出现在的配置:

php-fpm:

request_terminate_timeout = 0

php.ini:

max_execution_time = 30

先查阅了一下php-fpm文件中关于request_terminate_timeout的注释

; The timeout for serving a single request after which the worker process will

; be killed. This option should be used when the ‘max_execution_time‘ ini option

; does not stop script execution for some reason. A value of ‘0‘ means ‘off‘.

; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)

; Default Value: 0

这个注释说明了,request_terminate_timeout 适用于,当max_execution_time由于某种原因无法终止脚本的时候,会把这个php-fpm请求干掉。

再看看max_execution_time的注释:这设置了脚本被解析器中止之前允许的最大执行时间,默认是30s。看样子,我这个请求应该是被max_execution_time这个设置干掉了。

好吧,不死心,做了一个实验:

php-fpm request_terminate_timeout 设置 0 15
php.ini max_execution_time 设置 30 30
执行结果 php有Fatal error超时日志,http状态码为500 php无Fatal error超时日志,http状态码为502,php-fpm日志中有杀掉子进程日志

好吧,结论是web请求php执行时间受到2方面控制,一个是php.ini的max_execution_time(要注意的是sleep,http请求等待响应的时间是不算的,这里算的是真正的执行时间),另一个是php-fpm request_terminate_timeout 设置,这个算的是请求开始n秒。

原文地址:https://www.cnblogs.com/hurry-up/p/9013389.html

时间: 2024-11-05 11:36:26

php-fpm超时时间设置request_terminate_timeout分析的相关文章

VC socket Connect 超时时间设置

设置connect超时很简单,CSDN上也有人提到过使用select,但却没有一个令人满意与完整的答案.偶所讲的也正是select函数,此函数集成在winsock1.1中,简单点讲,"作用使那些想避免在套接字调用过程中被锁定的应用程序,采取一种有序的方式,同时对多个套接字进行管理"(<Windows网络编程技术>原话).使用方法与解释请见<Windows网络编程技术>. 在使用此函数前,需先将socket设置为非阻塞模式,这样,在connect时,才会立马跳过,

MYSQL的数据连接超时时间设置

大规模多线程操作事务的时候,有时候打开一个链接,会进行等待,这时候如果数据库的超时时间设置的过短,就可能会出现,数据链接自动被释放,当然设置过大也不好,慢SQL或其他因素引起的链接过长,导致整个系统被拖慢,甚至挂掉. SO,适当的设置超时时间. 网上查了很多资料,大多数解决方案都写的太复杂,其实只要设置一下等待超时时间就OK了 设置方法: SHOW GLOBAL VARIABLES LIKE '%timeout%'SET GLOBAL wait_timeout=10000

curl的超时时间设置

curl的超时时间设置 使用curl时,有两个超时时间:一个是连接超时时间,另一个是数据传输的最大允许时间. 连接超时时间: --connect-timeout 例: curl --connect-timeout 1 "http://localhost/index.html" 出错提示形如: curl: (28) connect() timed out! 不能连接提示如: curl:(7) couldn't connect to host 数据传输的最大允许时间用: -m 例: cur

【Hadoop】Hadoop DataNode节点超时时间设置

hadoop datanode节点超时时间设置 datanode进程死亡或者网络故障造成datanode无法与namenode通信,namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长.HDFS默认的超时时长为10分钟+30秒.如果定义超时时间为timeout,则超时时长的计算公式为: timeout = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval. 而默认的heartbeat.reche

接口调试工具ApiPost的发送超时时间设置方法

有部分使用ApiPost的同学反应:发送接口调试时,响应超时时间设置的太短导致接口访问失败,怎么设置呢? 就连百度也有很多人在搜: 今天就来说一说. ApiPost简介: ApiPost是一个支持团队协作,并可直接生成文档的API调试.管理工具.它支持模拟POST.GET.PUT等常见请求,是后台接口开发者或前端.接口测试人员不可多得的工具 . 官网:https://www.apipost.cn/ ApiPost的发送超时时间设置方法 对于老版本的ApiPost,这个超时时间的确是无法设置的.新

模拟HTTP请求超时时间设置

HTTP请求有两个超时时间:一个是连接超时时间,另一个是数据传输的最大允许时间(请求资源超时时间). 使用curl命令行 连接超时时间用 --connect-timeout 参数来指定 数据传输的最大允许时间用 -m 参数来指定 例如: curl --connect-timeout 10 -m 20 "http://XXXXXXX" 连接超时的话,出错提示形如: curl: (28) connect() timed out! 数据传输的最大允许时间超时的话,出错提示形如: curl:

ASP.NET 页面请求超时时间设置 Server.ScriptTimeOut executionTimeout

ASP.NET 页面请求超时时间(页面后台程序执行时间)默认值为 110 秒(在 .NET Framework 1.0 版和 1.1 版中,默认值为 90 秒) 即: Server.ScriptTimeout = 110(HttpServerUtility.ScriptTimeout = 110) System.Web.Configuration.HttpRuntimeSection().ExecutionTimeout.ToString() = 00:01:50(110 秒) 方法一:设置 S

CURL超时时间设置

一次完整的http请求,一般包含三个步骤: 通过DNS把域名解析成IP 通过IP地址连接到目标主机 获取目标主机数据(1.给目标主机输出http请求头,以\r\n\r\n结尾:2.获取目标主机传过来的数据) php 的 curl 对以上三个步骤都有设置超时时间的方法 1.保存DNS信息时间 CURLOPT_DNS_CACHE_TIMEOUT 设置在内存中保存DNS信息的时间,默认为120秒. 2.连接超时时间 CURLOPT_CONNECTTIMEOUT 以秒为单位.如果设置为0,则无限等待.

网站超时时间 设置

全局超时时间 服务器上如果有多个网站,希望统一设置一下超时时间,则需要设置 Machine.config 文件中的 ExecutionTimeout 属性值. Machine.config 文件位于 %SystemRoot%\Microsoft.NET\Framework\%VersionNumber%\CONFIG\ 目录中. 例如: 复制代码 代码如下: <httpRuntime executionTimeout="90" maxRequestLength="409