• 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秒。
  • 相关阅读:
    javascript学习_函数调用模式与this取值
    Git 学习笔记(Git教程-廖雪峰)
    Linux学习一周初体验
    前言_写在立冬时
    2021.10.24驾考日记
    大二上学期的HTML杂碎
    AISing Programming Contest 2021(AtCoder Beginner Contest 202)D题题解
    并查集两优化——按秩合并与路径压缩
    [算法板子] 求拓扑序列(拓扑排序)
    浅谈迭代加深搜索 ( IDDFS )
  • 原文地址:https://www.cnblogs.com/hurry-up/p/9013389.html
Copyright © 2020-2023  润新知