OPCache segfaults en AH01075 error

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mathijs Brand

Mathijs Brand

06/07/2022 10:46:59
Quote Anchor link
Afgelopen nacht heb ik een migratie gedaan van een Apache webserver naar een nieuwe server, welke voor het grootste deel een exacte kopie is van de oude server. Daarbij lopen we ertegenaan dat er veel errors naar voren komen wanneer we de site via een cloudflare proxy laten lopen:

[proxy_fcgi:error] [pid 5102] (104)Connection reset by peer: [client <WAN IP>:46632] AH01075: Error dispatching request to :, referer: https://<FQDN>/app_dev.php/en/collection

[10294.553531] php-fpm[6149]: segfault at 3c ip 00007fc3c0a1e43e sp 00007ffe12a9be60 error 4 in opcache.so[7fc3c0a17000+b5000]

503 service unavailable errors op de site.
Deze errors komen 2 van de 3 keer voor op een pagina. Refreshen van een pagina geeft 1 op de 3 keer geen error.

Waneer we OPCache uitschakelen hebben we dit issue niet meer.
Het leegmaken van de Cloudflare proxy en OPCache maakt helaas geen verschil.

Vervolgens hebben we een terugdraai gedaan naar de oude situatie. De oude server was nog online en we hebben de proxy omgezet naar dit adres. In de oude situatie kregen we vervolgens dezelfde foutmeldingen als hierboven. OPCache hebben we uitgeschakeld en nu komt het probleem niet meer voor. Ook hebben we in de test alvorens de migratie de nieuwe server direct aangeroepen. Toen kwam dit probleem niet naar voren.
Het lijkt mij dus dat het probleem zit in de combinatie van Cloudflare proxy en OPCache.

Graag hulp bij het vinden van de oorzaak van deze foutmeldingen en de 503 service unavailable foutmeldingen daaropvolgend. Wat zou een oplossing zijn waarmee de opcache weer ingeschakeld kan worden?

PHP versie:
PHP 8.1.7 (cli) (built: Jun 7 2022 18:21:38) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.7, Copyright (c) Zend Technologies
with Zend OPcache v8.1.3, Copyright (c), by Zend Technologies

Apache:
httpd.x86_64 2.4.6-97.el7.centos.5

PHP modules:
php81.x86_64 8.1-1.el7.remi @remi-safe
php81-php-bcmath.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-cli.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-common.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-devel.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-fpm.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-gd.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-imap.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-intl.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-ldap.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-mbstring.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-mysqlnd.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-odbc.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-opcache.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-pdo.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-pear.noarch 1:1.10.13-1.el7.remi @remi-safe
php81-php-pecl-imagick-im6.x86_64 3.7.0-1.el7.remi @remi-safe
php81-php-pecl-mcrypt.x86_64 1.0.4-5.el7.remi @remi-safe
php81-php-pecl-mysql.x86_64 1.0.0-0.25.20210423.ca514c4.el7.remi
php81-php-pecl-xmlrpc.x86_64 1.0.0~rc3-1.el7.remi @remi-safe
php81-php-pecl-zip.x86_64 1.20.0-1.el7.remi @remi-safe
php81-php-process.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-pspell.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-soap.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-tidy.x86_64 8.1.3-1.el7.remi @remi-safe
php81-php-xml.x86_64 8.1.3-1.el7.remi @remi-safe
php81-runtime.x86_64 8.1-1.el7.remi @remi-safe

OS:
CentOS Linux release 7.6.1810
Gewijzigd op 06/07/2022 10:52:44 door Mathijs Brand
 
PHP hulp

PHP hulp

19/08/2022 01:15:57
 
- Ariën  -
Beheerder

- Ariën -

06/07/2022 11:13:23
Quote Anchor link
Ik kan mij niet indenken dat de oorzaak de combinatie is tussen Opcache en CloudFlare zelf.
Ik denk eerder dat je naar de combinatie tussen PHP 8 en OpCache moet kijken. Wel lees ik hier en daar wat negatieve ervaringen over PHP 8 en Opcache.

Kan je misschien wat vinden in de OpCache log? Geen idee waar die staat, maar de output van phpinfo() zou hier wel ergens wel een hint naar kunnen geven.
 
Jan Koehoorn

Jan Koehoorn

06/07/2022 12:32:50
Quote Anchor link
Aanvulling: sowieso opcache.log_verbosity_level even op 4 zetten, meest verbose.
 
Mathijs Brand

Mathijs Brand

06/07/2022 12:47:05
Quote Anchor link
Bedankt voor jullie snelle reactie.
In de 10-opcache.ini van de PHP81 heb ik logging naar een file gezet in plaats van stderr en op niveau 4 gezet. We gaan de errors in deze testomgeving proberen te reproduceren.
 
Ad Fundum

Ad Fundum

06/07/2022 16:15:17
Quote Anchor link
Je krijgt een fcgi time-out met een of andere webserver op slechts 1 van de 3 php-fpm threads, en als je opcache 'uit zet' dan verdwijnt een segfault melding. En nu ook op de oude productie. Weet je zeker dat php-fpm toen niet opnieuw is gestart met een update die nog stond te wachten?

Klinkt wel alsof het een een bug is. Zoals met alle software is ook Opcache niet bug vrij. Misschien zit daar iets tussen?

Wanneer je verder zoekt, merk je dat je niet de enige bent met segfaults. Het kan ook aan andere extenties liggen die in combinatie met Opcache werken in combinatie met de eigen PHP-code. Zo kwam ik zelf Imagick tegen. Weer een ander verandert een JIT instelling waarna segfaults verdwijnen.
 
Mathijs Brand

Mathijs Brand

07/07/2022 09:27:46
Quote Anchor link
Ik heb een test gedaan en kwam daarin wel iets raars tegen.
De gebruikelijke meldingen kwamen naar voren:

[Wed Jul 6 13:16:47 2022] php-fpm[11479]: segfault at 557183ba9b70 ip 00007fc3c997944d sp 00007fff465343a0 error 6 in opcache.so[7fc3c9972000+b5000]

[Wed Jul 06 13:16:49.548232 2022] [proxy_fcgi:error] [pid 18580] (104)Connection reset by peer: [client WAN IP:54624] AH01075: Error dispatching request to :

Vervolgens kijk ik in de opcache logs en zie ik alleen scripts van een andere site gecached. Deze site draait ook op PHP 8.1

.....
Wed Jul 6 13:16:02 2022 (18902): Message Cached script '/home/design/public_html/var/cache/prod/translations/database.resources.php'
Wed Jul 6 13:16:02 2022 (18901): Message Cached script '/home/design/public_html/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport.php'
Wed Jul 6 13:16:02 2022 (18902): Message Cached script '/home/design/public_html/vendor/symfony/console/Command/HelpCommand.php'
Wed Jul 6 13:16:02 2022 (18902): Message Added key '/home/design/public_html/vendor/composer/../symfony/console/Command/HelpCommand.php'
.....

De site waar het om draait staat in de /home/test/ folder, maar deze komt niet voor in de opcache logs.
Gewijzigd op 07/07/2022 16:19:14 door Mathijs Brand
 
Ad Fundum

Ad Fundum

07/07/2022 09:31:38
Quote Anchor link
En je hebt waarschijnlijk al een reset uitgevoerd van opcache ?
- https://www.php.net/manual/en/function.opcache-reset.php
- https://serverguy.com/magento/flush-php-opcache/
 
Mathijs Brand

Mathijs Brand

07/07/2022 15:40:46
Quote Anchor link
Ik heb inderdaad meerdere opcache resets uitgevoerd.
Inmiddels krijg ik wel meldingen van de goede site te zien in de Opcache log, maar daar zie ik geen foutmeldingen voorbijkomen.

....
Thu Jul 7 15:34:32 2022 (12712): Message Cached script '/home/test/public_html/vendor/symfony/console/EventListener/ErrorListener.php'
Thu Jul 7 15:34:32 2022 (12712): Message Added key '/home/test/public_html/vendor/composer/../symfony/console/EventListener/ErrorListener.php'
....

onderstaande meldingen zagen we nog voorbijkomen in de /var/log/audit/audit.log:

....
type=ANOM_ABEND msg=audit(1657200917.625:3482): auid=4294967295 uid=1001 gid=1001 ses=4294967295 subj=system_u:system_r:init_t:s0 pid=12557 comm="php-fpm" reason="memory violation" sig=11
type=ANOM_ABEND msg=audit(1657200919.395:3483): auid=4294967295 uid=1001 gid=1001 ses=4294967295 subj=system_u:system_r:init_t:s0 pid=12558 comm="php-fpm" reason="memory violation" sig=11
type=ANOM_ABEND msg=audit(1657200921.530:3484): auid=4294967295 uid=1001 gid=1001 ses=4294967295 subj=system_u:system_r:init_t:s0 pid=12559 comm="php-fpm" reason="memory violation" sig=11
....

Dit lijkt een probleem met SELinux te zijn, welke op disabled stond.
Toen we deze in permissive modus hadden gezet leek het even goed te gaan, maar bovenstaande meldingen zijn na een reboot weer terug gekomen.
 
Ivo P

Ivo P

07/07/2022 16:07:15
Quote Anchor link
altijd lol met SELinux.... Vaak een oorzaak van een hoop "het-werkt-niet"ellende
 
Mathijs Brand

Mathijs Brand

08/07/2022 09:01:58
Quote Anchor link
We hebben gevonden waar het probleem zat en waar de foutmeldingen vandaan komen.
In de PHP instellingen onder de site-enabled hadden we voor deze site ook file caching ingeschakeld staan.
Daardoor werd cache naast naar de memory ook naar de /var/opt/remi/php81/lib/php/opcache geschreven als files.
Wanneer we dan een switch deden naar een andere server kwamen deze bestanden niet meer overeen.

Het resetten van de OPCache had geen effect op de filecache, maar alleen op de memory cache.
Vervolgens gaat PHP gecachte bestanden aanroepen die niet meer bestaan. Na het leeghalen van de /var/opt/remi/php81/lib/php/opcache folder is de foutmelding niet meer voorgekomen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.