Software-Empfehlungen
Wir benötigen die folgende Software für Produktionsinstanzen von Commerce:
- PHP
- Nginx und PHP-FPM
- MySQL
- Elasticsearch oder OpenSearch
Bei Multi-Server-Bereitstellungen oder bei Händlern, die eine Skalierung ihres Geschäfts planen, empfehlen wir Folgendes:
- Varnish cache
- Redis für Sitzungen (ab 2.0.6)
- Eine separate Redis-Instanz als Ihren Standard-Cache (verwenden Sie diese Instanz nicht für Seiten-Cache)
Informationen zu unterstützten Versionen der einzelnen Softwaretypen finden Sie unter Systemanforderungen .
Betriebssystem
Betriebssystemkonfigurationen und -optimierungen sind für Commerce im Vergleich zu anderen Webanwendungen mit hoher Auslastung ähnlich. Je mehr gleichzeitige Verbindungen vom Server verarbeitet werden, desto mehr verfügbare Sockets können vollständig zugeordnet werden. Der Linux-Kernel unterstützt einen Mechanismus zur "Wiederverwendung" von TCP-Verbindungen. Um diesen Mechanismus zu aktivieren, legen Sie den folgenden Wert in /etc/sysctl.conf
fest:
net.ipv4.tcp_tw_reuse = 1
Der Kernel-Parameter net.core.somaxconn
steuert die maximale Anzahl von offenen Sockets, die auf Verbindungen warten. Dieser Wert kann sicher auf 1024 erhöht werden, sollte jedoch mit der Fähigkeit des Servers korreliert werden, diesen Betrag zu verarbeiten. Um diesen Kernel-Parameter zu aktivieren, legen Sie den folgenden Wert in /etc/sysctl.conf
fest:
net.core.somaxconn = 1024
PHP
Magento unterstützt vollständig PHP 7.3 und 7.4. Es gibt mehrere Faktoren, die bei der Konfiguration von PHP berücksichtigt werden müssen, um maximale Geschwindigkeit und Effizienz bei der Anforderungsverarbeitung zu erreichen.
PHP-Erweiterungen
Es wird empfohlen, die Liste der aktiven PHP-Erweiterungen auf diejenigen zu beschränken, die für die Funktion Commerce erforderlich sind.
Magento Open Source und Adobe Commerce:
- ext-bcmath
- ext-ctype
- ext-curl
- ext-dom
- ext-fileinfo
- ext-gd
- ext-hash
- ext-iconv
- ext-intl
- ext-json
- ext-libxml
- ext-mbstring
- ext-openssl
- ext-pcre
- ext-pdo_mysql
- ext-simplexml
- ext-soap
- ext-sockets
- ext-natrium
- ext-tokenizer
- ext-xmlwriter
- ext-xsl
- ext-zip
- lib-libxml
- lib-openssl
Darüber hinaus erfordert Adobe Commerce Folgendes:
- ext-bcmath
- ext-ctype
- ext-curl
- ext-dom
- ext-fileinfo
- ext-gd
- ext-hash
- ext-iconv
- ext-intl
- ext-json
- ext-libxml
- ext-mbstring
- ext-openssl
- ext-pcre
- ext-pdo_mysql
- ext-simplexml
- ext-soap
- ext-sockets
- ext-natrium
- ext-spl
- ext-tokenizer
- ext-xmlwriter
- ext-xsl
- ext-zip
- lib-libxml
- lib-openssl
Das Hinzufügen weiterer Erweiterungen verlängert die Ladezeiten von Bibliotheken.
php-mcrypt
wurde aus PHP 7.2 entfernt und durch die sodium
Bibliothek ersetzt. Stellen Sie sicher, dass Natrium beim Aktualisieren von PHP ordnungsgemäß aktiviert ist.PHP-Einstellungen
Um eine erfolgreiche Ausführung aller Commerce -Instanzen ohne Daten- oder Code-Dumping auf die Festplatte zu gewährleisten, legen Sie die Speicherbegrenzung wie folgt fest:
memory_limit=1G
Erhöhen Sie zum Debugging diesen Wert auf 2G.
Realpath_cache-Konfiguration
Um die Leistung von Commerce zu verbessern, fügen Sie die folgenden empfohlenen realpath_cache
-Einstellungen in der Datei php.ini
hinzu oder aktualisieren Sie sie. Diese Konfiguration ermöglicht es PHP-Prozessen, Pfade zu Dateien zwischenzuspeichern, anstatt sie bei jedem Laden einer Seite zu suchen. Siehe Leistungsoptimierung in der PHP-Dokumentation.
realpath_cache_size=10M
realpath_cache_ttl=7200
ByteCode
Um die maximale Geschwindigkeit von Commerce auf PHP 7 zu erreichen, müssen Sie das OpCache-Modul aktivieren und es ordnungsgemäß konfigurieren. Diese Einstellungen werden für das Modul empfohlen:
opcache.memory_consumption=512
opcache.max_accelerated_files=60000
opcache.consistency_checks=0
opcache.validate_timestamps=0
opcache.enable_cli=1
Berücksichtigen Sie bei der Feinabstimmung der Speicherzuordnung für opcache die Größe der Magento-Codebasis und all Ihre Erweiterungen. Das Magento-Leistungsteam verwendet die Werte aus dem obigen Beispiel zum Testen, da es genügend Platz in opcache für die durchschnittliche Anzahl der installierten Erweiterungen bereitstellt.
Wenn Sie über einen Computer mit geringem Arbeitsspeicher verfügen und nicht viele Erweiterungen oder Anpassungen installiert sind, verwenden Sie die folgenden Einstellungen, um ein ähnliches Ergebnis zu erhalten:
opcache.memory_consumption=64
opcache.max_accelerated_files=60000
APCU
Es wird empfohlen, die PHP APCu-Erweiterung und die Konfiguration composer
zu aktivieren, um sie zu unterstützen, um die maximale Leistung zu optimieren. Diese Erweiterung speichert Dateispeicherorte für geöffnete Dateien zwischen, wodurch die Leistung für Commerce -Server-Aufrufe, einschließlich Seiten, Ajax-Aufrufe und Endpunkte, erhöht wird.
Bearbeiten Sie Ihre apcu.ini
-Datei, um Folgendes einzuschließen:
extension=apcu.so
[apcu]
apc.enabled = 1
Webserver
Magento unterstützt vollständig die Nginx- und Apache-Webserver. Commerce enthält empfohlene Beispielkonfigurationsdateien in den Dateien <magento_home>/nginx.conf.sample
(Nginx) und <magento_home>.htaccess.sample
(Apache). Das Nginx-Beispiel enthält Einstellungen für eine bessere Leistung und ist so konzipiert, dass nur wenig Neukonfiguration erforderlich ist. Zu den wichtigsten in der Beispieldatei definierten Best Practices für die Konfiguration gehören:
- Einstellungen zum Zwischenspeichern von statischen Inhalten in einem Browser
- Speicher- und Ausführungszeiteinstellungen für PHP
- Einstellungen zur Inhaltskomprimierung
Sie sollten auch die Anzahl der Threads für die Verarbeitung von Eingabeanfragen konfigurieren, wie unten aufgeführt:
MySQL
Dieses Dokument enthält keine detaillierten MySQL-Tuning-Anweisungen, da jeder Store und jede Umgebung unterschiedlich sind. Wir können jedoch einige allgemeine Empfehlungen abgeben.
Es wurden viele Verbesserungen an MySQL 5.7.9 vorgenommen. Wir sind überzeugt, dass MySQL mit guten Standardeinstellungen verteilt ist. Die wichtigsten Einstellungen sind:
innodb_buffer_pool_instances
innodb_buffer_pool_size
innodb_buffer_pool_instances
und innodb_buffer_pool_size
an, sodass jede Pufferpool-Instanz mindestens 1 GB beträgt.max_connections
max_connections
sollte mit der Gesamtzahl der im Anwendungsserver konfigurierten PHP-Threads korrelieren. Eine allgemeine Empfehlung wäre 300 für eine kleine und 1 000 für eine mittlere Umwelt.innodb_thread_concurrency
innodb_thread_concurrency = 2 * (NumCPUs + NumDisks)
Varnish
Magento empfiehlt dringend, Varnish als vollständigen Seiten-Cache-Server für Ihren Store zu verwenden. Das PageCache-Modul ist weiterhin in der Codebase vorhanden, sollte jedoch nur zu Entwicklungszwecken verwendet werden. Sie sollte nicht zusammen mit oder anstelle von Varnish verwendet werden.
Installieren Sie Varnish auf einem separaten Server vor der Webstufe. Es sollte alle eingehenden Anfragen akzeptieren und zwischengespeicherte Seitenkopien bereitstellen. Damit Varnish effektiv mit gesicherten Seiten funktioniert, kann ein SSL-Terminierungsproxy vor Varnish platziert werden. Zu diesem Zweck kann Nginx verwendet werden.
Commerce verteilt eine Beispielkonfigurationsdatei für Varnish (Versionen 4 und 5), die alle empfohlenen Leistungseinstellungen enthält. Zu den wichtigsten Leistungsmerkmalen zählen:
- Die Backend-Konsistenzprüfung fragt den Commerce -Server ab, um festzustellen, ob er zeitnah reagiert.
- Mit dem Übergangmodus können Sie Varnish anweisen, ein Objekt über den TTL-Zeitraum (Time to Live) hinaus im Cache zu belassen und diesen veralteten Inhalt bereitzustellen, wenn Commerce nicht gesund ist oder wenn noch kein neuer Inhalt abgerufen wurde.
- Der SAINT-Modus blackt ungesunde Commerce Server für einen konfigurierbaren Zeitraum auf. Daher können ungesunde Backends keinen Traffic bereitstellen, wenn Varnish als Lastenausgleich verwendet wird.
Weitere Informationen zur Implementierung dieser Funktionen finden Sie unter Erweiterte Konfiguration Varnish 2} .
Optimieren der Asset-Leistung
Im Allgemeinen empfehlen wir, Ihre Assets (Bilder, JS, CSS usw.) in einem CDN zu speichern, um eine optimale Leistung zu erzielen.
Wenn Ihre Site nicht die Bereitstellung einer großen Anzahl von Gebietsschemas erfordert und sich Ihre Server in derselben Region wie die Mehrheit Ihrer Kunden befinden, können Sie erhebliche Leistungsgewinne zu geringeren Kosten feststellen, indem Sie Ihre Assets in Varnish speichern, anstatt ein CDN zu verwenden.
Um Ihre Assets in Varnish zu speichern, fügen Sie die folgenden VCL-Einträge in Ihrer default.vcl
-Datei hinzu, die von Commerce für Varnish 5 generiert wurde.
Fügen Sie am Ende der if
-Anweisung für PURGE-Anforderungen in der vcl_recv
-UnterRoutine Folgendes hinzu:
# static files are cacheable. remove SSL flag and cookie
if (req.url ~ "^/(pub/)?(media|static)/.*\.(ico|html|css|js|jpg|jpeg|png|gif|tiff|bmp|mp3|ogg|svg|swf|woff|woff2|eot|ttf|otf)$") {
unset req.http.Https;
unset req.http./* {{ ssl_offloaded_header }} */;
unset req.http.Cookie;
}
Suchen Sie in der UnterRoutine vcl_backend_response
nach der Anweisung if
, mit der das Cookie für GET
- oder HEAD
-Anforderungen aufgehoben wird.
Der aktualisierte if
-Block sollte wie folgt aussehen:
# validate if we need to cache it and prevent from setting cookie
# images, css and js are cacheable by default so we have to remove cookie also
if (beresp.ttl > 0s && (bereq.method == "GET" || bereq.method == "HEAD")) {
unset beresp.http.set-cookie;
if (bereq.url !~ "\.(ico|css|js|jpg|jpeg|png|gif|tiff|bmp|gz|tgz|bz2|tbz|mp3|ogg|svg|swf|woff|woff2|eot|ttf|otf)(\?|$)") {
set beresp.http.Pragma = "no-cache";
set beresp.http.Expires = "-1";
set beresp.http.Cache-Control = "no-store, no-cache, must-revalidate, max-age=0";
}
}
Starten Sie den Varnish -Server neu, um zwischengespeicherte Assets beim Aktualisieren Ihrer Site oder Bereitstellen/Aktualisieren von Assets zu leeren.
Caching- und Sitzungsserver
Magento bietet eine Reihe von Optionen zum Speichern des Caches und der Sitzungsdaten, einschließlich Redis, Memcache, Dateisystem und Datenbank. Einige dieser Optionen werden nachfolgend beschrieben.
Einrichtung eines einzelnen Webknotens
Wenn Sie Ihren gesamten Traffic mit nur einem Webknoten bedienen möchten, ist es nicht sinnvoll, Ihren Cache auf einen Remote-Redis-Server zu legen. Verwenden Sie stattdessen entweder das Dateisystem oder einen lokalen Redis-Server. Wenn Sie das Dateisystem verwenden möchten, platzieren Sie Ihre Cache-Ordner auf einem auf einem RAM-Dateisystem bereitgestellten Volume. Wenn Sie einen lokalen Redis-Server verwenden möchten, empfehlen wir dringend, Redis so zu konfigurieren, dass es Sockets für direkte Verbindungen verwendet, anstatt Daten über HTTP auszutauschen.
Einrichtung mehrerer Webknoten
Bei einer Einrichtung mehrerer Webknoten ist Redis die beste Option. Da Commerce viele Daten aktiv zwischenspeichert, um eine bessere Leistung zu erzielen, achten Sie auf Ihren Netzwerkkanal zwischen den Webknoten und dem Redis-Server. Sie möchten nicht, dass der Kanal zu einem Engpass bei der Anforderungsverarbeitung wird.