Req #78413 [PATCH]: request_terminate_timeout does not take effect after fastcgi_finish_request
Edit report at https://bugs.php.net/bug.php?id=78413&edit=1
ID: 78413
Patch added by: turchanov@farpost.com
Reported by: rs dot orlov at gmail dot com
Summary: request_terminate_timeout does not take effect after
fastcgi_finish_request
Status: Open
Type: Feature/Change Request
Package: FPM related
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
The following pull request has been associated:
Patch Name: Fix #78413: php-fpm request_terminate_timeout does not take effect afâ¦
On GitHub: https://github.com/php/php-src/pull/4637
Patch: https://github.com/php/php-src/pull/4637.patch
Previous Comments:
------------------------------------------------------------------------
[2019-08-14 00:32:37] rs dot orlov at gmail dot com
Description:
------------
Hi there.
It is common practice to call fastcgi_finish_request as soon as response is ready to be sent and
defer some heavy load tasks after that. But here is the problem: process will no longer be
terminated if it exceeds request_terminate_timeout.
It happens because fpm_request_finished called inside fastcgi_finish_request changes request state
to FPM_REQUEST_FINISHED. But fpm_request_check_timed_out only checks processes being in state
between FPM_REQUEST_ACCEPTING and FPM_REQUEST_END.
Turns out that there is no way to limit execution time of a worker after fastcgi_finish_request.
That behavior may lead to all fpm-pool being occupied.
Possible solution may be a config option which enables fpm_request_check_timed_out for processes in
FPM_REQUEST_FINISHED state,
Test script:
---------------
<?php
fastcgi_finish_request();
$time = microtime(true);
// must be any time greater than configured request_terminate_timeout
$delaySec = 10;
while ($delaySec > (microtime(true) - $time)) {
usleep(100000);
}
Expected result:
----------------
Php worker being terminated by fpm after %request_terminate_timeout% of execution time
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=78413&edit=1
Thread (3 messages)