1

I configured Apache 2.4 MPM Event with PHP7.3-FPM on a pretty busy web server as follows:

Timeout 90

<Proxy "unix:/run/php/php7.3-fpm.sock|fcgi://php-fpm">
    ProxySet disablereuse=on timeout=90
</Proxy>

<FilesMatch ".+\.php$">
        SetHandler proxy:fcgi://php-fpm
</FilesMatch>

The PHP config in /etc/php/7.3/fpm/php.ini is set to

max_execution_time=60

The PHP-FPM is configured in /etc/php/7.3/fpm/pool.d/www.conf to

request_terminate_timeout=90

The read timeouts are configured in /etc/apache2/mods-enabled/reqtimeout.conf like this:

RequestReadTimeout header=20-120,minrate=50
RequestReadTimeout body=60-120,minrate=50

In FPM log now I can see every minute 1-2 workers for unknown requests which are killed after 90+ seconds.

[16-May-2019 09:25:32] WARNING: [pool www] child 105567, script '' (request: " ") execution timed out (113.002653 sec), terminating
[16-May-2019 09:25:32] WARNING: [pool www] child 105567 exited on signal 15 (SIGTERM) after 4050.136381 seconds from start
[16-May-2019 09:25:32] NOTICE: [pool www] child 110414 started

If I don't set request_terminate_timeout to kill these workers they stay longer (~5 minutes) in state "Reading headers" and block the PHP-FPM pool.

The threads in Apache MPM seem not to get blocked anyway. Nothing is hitting the max workers values.

How can I see which script/request these PHP workers belong to? Why these scripts are running even after max_execution_time of 60 seconds has expired? How can I avoid blocking the PHP pool by such requests?

I suspect there could be sometimes incomplete HTTPS requests which are starting the PHP worker somehow. Is there a way to avoid starting a PHP worker for these?

New contributor
Alexey Ozerov is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.

Your Answer

Alexey Ozerov is a new contributor. Be nice, and check out our Code of Conduct.

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.