Software-Empfehlungen
Für Produktionsinstanzen von Commerce benötigen wir die folgende Software:
- PHP
- Nginx und PHP-FPM
- MySQL
- Elasticsearch oder OpenSearch
Für Multi-Server-Bereitstellungen oder für Händler, die eine Skalierung ihres Unternehmens planen, empfehlen wir Folgendes:
- Varnish
- Redis für Sitzungen (ab 2.0.6+)
- Eine separate Redis-Instanz als Standard-Cache (verwenden Sie diese Instanz nicht für den Seiten-Cache)
Unter Systemanforderungen finden Sie Informationen zu den unterstützten Versionen der einzelnen Softwaretypen.
Betriebssystem
Betriebssystemkonfigurationen und -optimierungen sind für Commerce im Vergleich zu anderen Web-Anwendungen mit hoher Last ähnlich. Je mehr gleichzeitige Verbindungen vom Server verarbeitet werden, desto mehr Sockets kann die Anzahl der verfügbaren Sockets vollständig zugewiesen werden. Der Linux-Kernel unterstützt einen Mechanismus zum „Wiederverwenden“ 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 offener 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 Kernelparameter zu aktivieren, setzen Sie den folgenden Wert in /etc/sysctl.conf
:
net.core.somaxconn = 1024
PHP
Magento unterstützt PHP 7.3 und 7.4 vollständig. Es gibt mehrere Faktoren, die bei der Konfiguration von PHP zu berücksichtigen sind, um maximale Geschwindigkeit und Effizienz bei der Verarbeitung von Anfragen zu erhalten.
PHP-Erweiterungen
Es wird empfohlen, die Liste der aktiven PHP-Erweiterungen auf die zu beschränken, die für Commerce Funktionalität erforderlich sind.
Magento Open Source und Adobe Commerce:
- ext-bcmath
- ext-type
- 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-socket
- Ext-Natrium
- ext-tokenizer
- ext-xmlWriter
- ext-xsl
- ext-zip
- lib-libxml
- lib-openssl
Darüber hinaus erfordert Adobe Commerce Folgendes:
- ext-bcmath
- ext-type
- 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-socket
- Ext-Natrium
- ext-spl
- ext-tokenizer
- ext-xmlWriter
- ext-xsl
- ext-zip
- lib-libxml
- lib-openssl
Das Hinzufügen weiterer Erweiterungen erhöht die Ladezeiten von Bibliotheken.
php-mcrypt
wurde aus PHP 7.2 entfernt und durch die sodium
-Bibliothek ersetzt. Stellen Sie sicher dassNatrium) beim Upgrade von PHP ordnungsgemäß aktiviert ist.PHP-Einstellungen
Um eine erfolgreiche Ausführung aller Commerce-Instanzen zu gewährleisten, ohne Daten oder Code auf der Festplatte abzulegen, stellen Sie die Speicherbegrenzung wie folgt ein:
memory_limit=1G
Erhöhen Sie zum Debuggen diesen Wert auf 2G.
RealPath_cache-Konfiguration
Um die Commerce zu verbessern, fügen Sie die folgenden empfohlenen realpath_cache
in der 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
Byte-Code
Um die maximale Geschwindigkeit von Commerce auf PHP 7 zu erreichen, müssen Sie das OpCache-Modul aktivieren und 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 Speicherzuweisung für Opcache die Größe der Magento-Codebasis und all Ihrer Erweiterungen. Das Leistungsteam der Magento verwendet die Werte im vorherigen Beispiel zum Testen, da es im Opcache ausreichend Platz für die durchschnittliche Anzahl installierter Erweiterungen bietet.
Wenn Sie einen Computer mit wenig Arbeitsspeicher haben und nicht viele Erweiterungen oder Anpassungen installiert sind, verwenden Sie die folgenden Einstellungen, um ein ähnliches Ergebnis zu erzielen:
opcache.memory_consumption=64
opcache.max_accelerated_files=60000
APCU
Es wird empfohlen, die PHP APCu-Erweiterung zu aktivieren und composer
zu konfigurieren, um sie zu unterstützen um die maximale Leistung zu optimieren. Diese Erweiterung speichert Dateispeicherorte für geöffnete Dateien zwischen, was die Leistung für Commerce Server-Aufrufe wie Seiten, Ajax-Aufrufe und Endpunkte erhöht.
Bearbeiten Sie die apcu.ini
Datei so, dass sie Folgendes enthält:
extension=apcu.so
[apcu]
apc.enabled = 1
Webserver
Magento unterstützt vollständig die Nginx- und Apache-Webserver. Commerce enthält Beispiele für empfohlene Konfigurationsdateien in den <magento_home>/nginx.conf.sample
-Dateien (Nginx) und <magento_home>.htaccess.sample
-Dateien (Apache). Das Nginx-Beispiel enthält Einstellungen für eine bessere Leistung und ist so konzipiert, dass nur wenige Neukonfigurationen erforderlich sind. Zu den wichtigsten Best Practices für die Konfiguration, die in der Beispieldatei definiert sind, gehören:
- Einstellungen für das Caching statischer Inhalte 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:
MaxRequestWorkers
/etc/httpd/conf/httpd.conf
(CentOS)MySQL
Dieses Dokument enthält keine detaillierten MySQL, da jeder Store und jede Umgebung unterschiedlich sind. Wir können jedoch einige allgemeine Empfehlungen geben.
Es wurden viele Verbesserungen an MySQL 5.7.9 vorgenommen. Wir sind zuversichtlich, dass MySQL mit guten Standardeinstellungen verteilt wird. Die wichtigsten Einstellungen sind:
innodb_buffer_pool_instances
innodb_buffer_pool_size
innodb_buffer_pool_instances
und innodb_buffer_pool_size
an, sodass jede Pufferpoolinstanz mindestens 1 GB beträgt.max_connections
max_connections
sollte mit der Gesamtzahl der PHP-Threads korrelieren, die im Anwendungs-Server konfiguriert sind. Eine allgemeine Empfehlung wäre 300 für eine kleine und 1.000 für eine mittlere Umgebung.innodb_thread_concurrency
innodb_thread_concurrency = 2 * (NumCPUs + NumDisks)
Varnish
Magento empfiehlt dringend, Varnish als Seiten-Cache-Server für Ihren Store zu verwenden. Das PageCache-Modul ist weiterhin in der Codebasis vorhanden, sollte jedoch nur zu Entwicklungszwecken verwendet werden. Es sollte nicht zusammen mit oder anstelle von Varnish verwendet werden.
Installieren Sie Varnish auf einem separaten Server vor der Web-Stufe. Er sollte alle eingehenden Anfragen akzeptieren und zwischengespeicherte Seitenkopien bereitstellen. Damit Varnish effektiv mit gesicherten Seiten arbeiten können, kann ein SSL-Terminations-Proxy vor Varnish platziert werden. Hierfür kann Nginx verwendet werden.
Commerce verteilt eine Beispielkonfigurationsdatei für Varnish (Versionen 4 und 5), die alle empfohlenen Leistungseinstellungen enthält. Zu den wichtigsten Leistungskriterien zählen:
- Backend-Konsistenzprüfung fragt den Commerce-Server ab, ob er zeitnah reagiert.
- Gnadenmodus ermöglicht es Ihnen, Varnish anzuweisen, ein Objekt über seine Time-to-Live (TTL)-Periode hinaus im Cache zu halten und diesen veralteten Inhalt bereitzustellen, wenn Commerce nicht in Ordnung ist oder noch kein neuer Inhalt abgerufen wurde.
- Saint-Modus sperrt für einen konfigurierbaren Zeitraum die Liste der fehlerhaften Commerce-Server. Daher können ungesunde Backends bei der Verwendung von Varnish als Lastenausgleich keinen Traffic bereitstellen.
Siehe Erweitert Varnish Konfiguration für weitere Informationen zur Implementierung dieser Funktionen.
Asset-Leistung optimieren
Im Allgemeinen empfehlen wir, Ihre Assets (Bilder, JS, CSS usw.) in einem CDN zu speichern, um eine optimale Leistung zu erzielen.
Wenn für Ihre Site keine große Anzahl von Gebietsschemata bereitgestellt werden muss und sich Ihre Server in derselben Region wie die meisten Ihrer Kunden befinden, können Sie zu niedrigeren Kosten erhebliche Leistungsgewinne erzielen, 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 von Commerce für Varnish 5 generierten default.vcl
hinzu.
Fügen Sie am Ende der if
für PURGE-Anfragen 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 vcl_backend_response
-Unterroutine nach der if
-Anweisung, die das Cookie für GET
- oder HEAD
-Anfragen aufhebt.
Der aktualisierte if
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 zu leeren, sobald Sie Ihre Site aktualisieren oder Assets bereitstellen/aktualisieren.
Caching und Sitzungsserver
Magento bietet eine Reihe von Optionen zum Speichern Ihrer Cache- und Sitzungsdaten, einschließlich Redis, Memcache, Dateisystem und Datenbank. Einige dieser Optionen werden im Folgenden erläutert.
Einrichtung eines einzelnen Web-Knotens
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, legen Sie Ihre Cache-Ordner auf ein Volume, das in einem RAM-Dateisystem gemountet ist, ab. Wenn Sie einen lokalen Redis-Server verwenden möchten, empfehlen wir dringend, Redis so zu konfigurieren, dass Sockets für direkte Verbindungen verwendet werden, anstatt Daten über HTTP auszutauschen.
Einrichtung mehrerer Web-Knoten
Für die Einrichtung mehrerer Web-Knoten ist Redis die beste Option. Da Commerce viele Daten aktiv zwischenspeichert, um eine bessere Leistung zu erzielen, achten Sie auf Ihren Netzwerkkanal zwischen den Web-Knoten und dem Redis-Server. Sie möchten nicht, dass der Kanal zu einem Engpass bei der Anfrageverarbeitung wird.