Performance-Bremse durch ionCube Loader bei Shopware 6.7.x / PHP 8.5

Hallo zusammen,

ich wollte kurz meine Beobachtung teilen, weil es bei uns einen massiven Performance-Unterschied gemacht hat.

Wir hatten auf einem neuen Server mit Shopware 6.7.x und PHP 8.5 deutlich höhere Zugriffszeiten in Store-API/Product-Requests. Nach längerer Suche lag der größte Hebel nicht bei Shopware selbst, Redis, OpenSearch oder JIT, sondern offenbar beim aktivierten ionCube Loader.

Nur durch das Deaktivieren von ionCube haben sich die Zugriffszeiten bei uns ungefähr halbiert. Ein Product Store-API POST lag vorher beispielhaft bei ca. 400 ms und danach bei ca. 200 ms.

Kurz zur Einordnung: ionCube ist ein PHP Loader, der benötigt wird, wenn PHP-Dateien verschlüsselt bzw. encoded ausgeliefert werden. Das betrifft meistens kommerzielle Software oder Plugins. Shopware selbst benötigt ionCube meines Wissens nach nicht zwingend. Wenn aber ein Plugin encoded ist, kann es ohne ionCube natürlich zu Fehlern kommen.

Bei uns lief Shopware nach der Deaktivierung von ionCube weiter, inklusive der verwendeten Plugins. Trotzdem sollte man das natürlich vorher testen.

Deaktiviert wurde ionCube bei uns über die PHP-Konfiguration, indem die ionCube-INI-Datei umbenannt wurde, z. B.:

mv /opt/keyhelp/php/8.5/etc/conf.d/00-ioncube-loader.ini \
   /opt/keyhelp/php/8.5/etc/conf.d/00-ioncube-loader.ini.disabled

Danach PHP-FPM neu starten:

systemctl restart keyhelp-php85-fpm

Prüfen kann man es z. B. mit:

/opt/keyhelp/php/8.5/bin/php -v | grep -i ion || echo "ionCube ist aus"

Rollback wäre entsprechend:

mv /opt/keyhelp/php/8.5/etc/conf.d/00-ioncube-loader.ini.disabled \
   /opt/keyhelp/php/8.5/etc/conf.d/00-ioncube-loader.ini

systemctl restart keyhelp-php85-fpm

Mein aktueller Eindruck: In Kombination mit PHP 8.3.31/8.5, FPM und Shopware/Symfony kann ionCube ein erheblicher Performance-Bremser sein — auch dann, wenn es nicht offensichtlich als Ursache erkennbar ist.

Vielleicht hilft der Hinweis jemandem, der ähnliche unerklärliche Performance-Probleme nach Server-/PHP-Wechsel hat.

Nur als Bemerkung: Shopware und die Plugin im Shopware Store arbeiten nicht mehr mit ionCube. Wenn sonst keine fremden Plugins im System sind, braucht man ionCube gar nicht. Früher bei SW5 kam ionCube zum Einsatz.

Ioncube ist kein Bestandteil von php.
Da habt ihr euch selber was hingefummelt.
Ihr sollte mal lieber bei euch checken wieso das da rum lag.

Super Kommentar hingefumnmelt.
IonCube Loader ist eine PHP-Extension. Und nicht im PHP Core dabei. Richtig. Es ist also eine Extension genauso wie z.b. pdo_mysql, curl, redis, opcache usw. welche bei vielen Hostings oder Server Images einfach global aktiv ist.

opcache ist Bestandteil von php8.5

Ioncube ist nirgendwo dabei.
Du musst es wollen.
Und ich habe Zugriff auf paar Shops bei verschiedenen Hostern, dass gibt es dort nirgendwo drin.
Daher, ihr habt dort was hingefummelt, und wundert euch nun.
Sucht doch mal lieber in eurer Dokumentation warum es dazu gebaut wurde.

Es gibt diverse Hoster, auch Shopware „zertifiziert“, die haben ionCube im ManagedHosting vorbereitet. Da genügt dann ein Klick auf aktivieren.

Unabhängig von ionCube: auf einem Production Server sollte nur das geladen und ausgeführt werden, was auch wirklich benötigt wird. Alles andere frisst unnötig Ressourcen, manches mehr, manches weniger.

Ich habe einen Server bei Timme Hosting da ist ionCube aktiv und ich kann es nicht deaktivieren. Der Support sagt, die arbeiten an einer Lösung, dass ich das Modul deaktivieren kann.

@MBDealer
Danke für den Info. Wir sind auch bei TimmeHosting und haben nur Performance Probleme bei Time to First Byte (TTFB). Vielleicht wird das ja auch besser, wenn ionCube abgeschaltet ist.