Bug #74778 [Opn->Asn]: opcache_clear() puts php-fpm master in a cpu loop
| From: | bukka@php.net | Date: | Wed, 01 Dec 2021 21:24:37 +0000 |
| Subject: | Bug #74778 [Opn->Asn]: opcache_clear() puts php-fpm master in a cpu loop | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-238105@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=74778&edit=1
ID: 74778
Updated by: bukka@php.net
Reported by: daniel dot ylitalo at mytaste dot com
Summary: opcache_clear() puts php-fpm master in a cpu loop
-Status: Open
+Status: Assigned
Type: Bug
Package: FPM related
Operating System: FreeBSD 11.0-RELEASE-p10
PHP Version: 7.1.6
-Assigned To:
+Assigned To: bukka
Block user comment: N
Private report: N
New Comment:
I know that this is few years old but would you be able to confirm if this is still happening as
there have been bunch of improvements in opcache.
Considering that it was causing extra processing on master process and it's on FreeBSD, it
might be related kqueue which has got some issues reported.
Previous Comments:
------------------------------------------------------------------------
[2017-06-19 08:35:19] daniel dot ylitalo at mytaste dot com
Description:
------------
I tried clearing a pools opcache with opcache_reset(); however while the script finishes running,
once it completes the fpm-master process goes into some kind of loop using 50% cpu and the pools
goes dormant and stops accepting connections
Nginx block:
location /opcache-clear {
fastcgi_pass unix:/var/run/php/pool-xyz-socket.sock;
fastcgi_index clear.php;
fastcgi_param PHP_ADMIN_VALUE
"open_basedir=/home/www/clear-opcache.xxxxxxxxxx.com";
include fastcgi_params;
fastcgi_param SCRIPT_NAME /clear.php;
fastcgi_param SCRIPT_FILENAME $document_root/clear.php;
}
FPM POOLS consists of this configuration with different listen.owners/users:
[xxxxxxx-xxx]
listen = /var/run/php/pool-xyz-socket.sock
listen.owner = xxxxxxxx
listen.group = www
listen.mode = 0660
user = xx-xx
group = xx-xx
pm = static
pm.max_children = 20
pm.status_path = /fpm-status.php
Test script:
---------------
<?php
$status = opcache_reset();
if($status === true) {
echo '+OK';
}else{
echo '+ERROR';
}
Expected result:
----------------
The fpm-master process should not go into a cpu loop and continue serving requests
Actual result:
--------------
fpm sockets stops accepting connections
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=74778&edit=1