php-fpm逾時時間設定request_terminate_timeout分析

來源:互聯網
上載者:User
今天發現了一個很神奇的事情,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秒。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.