Aanbevelingen voor software
De volgende software is vereist voor productieinstanties van Commerce :
- PHP
- Nginx en PHP-FPM
- MySQL
- Elasticsearch of OpenSearch
Voor multiserver plaatsingen, of voor verkopers die op het schrapen van hun zaken plannen, adviseren wij het volgende:
- Varnish cache
- Redisvoor zittingen (van 2.0.6+)
- Een afzonderlijke Redis instantie als uw standaardgeheime voorgeheugen(gebruik deze instantie niet voor paginacache)
Zie systeemvereistenvoor informatie over gesteunde versies van elk type van software.
Besturingssysteem
Configuraties en optimalisaties van besturingssystemen zijn vergelijkbaar voor Commerce in vergelijking met andere webtoepassingen met een hoge belasting. Naarmate het aantal gelijktijdige verbindingen dat door de server wordt afgehandeld toeneemt, kan het aantal beschikbare sockets volledig worden toegewezen. De Linux-kernel ondersteunt een mechanisme voor het "hergebruiken" van TCP-verbindingen. U kunt dit mechanisme inschakelen door de volgende waarde in te stellen in /etc/sysctl.conf
:
net.ipv4.tcp_tw_reuse = 1
De kernel-parameter net.core.somaxconn
bepaalt het maximum aantal open sockets dat op verbindingen wacht. Deze waarde kan veilig worden verhoogd tot 1024, maar moet gecorreleerd zijn met de capaciteit van de server om deze hoeveelheid te verwerken. U kunt deze kernel-parameter inschakelen door de volgende waarde in te stellen in /etc/sysctl.conf
:
net.core.somaxconn = 1024
PHP
Magento ondersteunt PHP 7.3 en 7.4 volledig. Er zijn verschillende factoren waarmee rekening moet worden gehouden bij het configureren van PHP voor maximale snelheid en efficiëntie bij het verwerken van aanvragen.
PHP-extensies
We raden u aan de lijst met actieve PHP-extensies te beperken tot de extensies die vereist zijn voor Commerce -functionaliteit.
Magento Open Source en Adobe Commerce:
- Text-bcmath
- text-type
- Tekstkrullen
- ext-dom
- Text-fileinfo
- ext-gd
- text-hash
- ext-iconv
- ext-intl
- ext-json
- ext-libxml
- ext-mbstring
- text-openssl
- ext-pcre
- ext-pdo_mysql
- ext-simplexml
- text-soap
- tekstsockets
- ext-natrium
- text-tokenizer
- ext-xmlwriter
- ext-xsl
- text-zip
- lib-libxml
- lib-openssl
Daarnaast vereist Adobe Commerce:
- Text-bcmath
- text-type
- Tekstkrullen
- ext-dom
- Text-fileinfo
- ext-gd
- text-hash
- ext-iconv
- ext-intl
- ext-json
- ext-libxml
- ext-mbstring
- text-openssl
- ext-pcre
- ext-pdo_mysql
- ext-simplexml
- text-soap
- tekstsockets
- ext-natrium
- text-spl
- text-tokenizer
- ext-xmlwriter
- ext-xsl
- text-zip
- lib-libxml
- lib-openssl
Als u meer extensies toevoegt, duurt het laden van de bibliotheek langer.
php-mcrypt
is verwijderd uit PHP 7.2 en vervangen door de sodium
library. Zorg ervoor dat natriumbehoorlijk wordt toegelaten wanneer het bevorderen van PHP.PHP-instellingen
Als u wilt garanderen dat alle Commerce -instanties correct worden uitgevoerd zonder gegevens of code op schijf te storten, stelt u de geheugenlimiet als volgt in:
memory_limit=1G
Voor het zuiveren, verhoog deze waarde tot 2G.
Configuratie Realpath_cache
Als u de Commerce -prestaties wilt verbeteren, voegt u de volgende aanbevolen realpath_cache
-instellingen toe aan of werkt u deze bij in het php.ini
-bestand. Met deze configuratie kunnen PHP-processen paden naar bestanden in cache plaatsen in plaats van ze elke keer weer op te zoeken wanneer een pagina wordt geladen. Zie Prestaties diein de PHP documentatie stempelen.
realpath_cache_size=10M
realpath_cache_ttl=7200
ByteCode
Om maximale snelheid te krijgen uit Commerce op PHP 7, moet u de module OpCache activeren en behoorlijk vormen het. Deze instellingen worden aanbevolen voor de module:
opcache.memory_consumption=512
opcache.max_accelerated_files=60000
opcache.consistency_checks=0
opcache.validate_timestamps=0
opcache.enable_cli=1
Wanneer u de geheugentoewijzing voor opcache precies afstemt, moet u rekening houden met de grootte van de codebasis van het Magento en al uw extensies. Het prestatieteam van het Magento gebruikt de waarden in het vorige voorbeeld voor het testen omdat het genoeg ruimte in opcache voor het gemiddelde aantal geïnstalleerde extensies verstrekt.
Als u een computer met weinig geheugen hebt en u niet veel extensies of aanpassingen hebt geïnstalleerd, gebruikt u de volgende instellingen voor een vergelijkbaar resultaat:
opcache.memory_consumption=64
opcache.max_accelerated_files=60000
APCU
Wij adviseren toelatend de uitbreiding PHP APCuen vormend composer
om hette steunen om voor maximumprestaties te optimaliseren. Met deze extensie worden bestandslocaties voor geopende bestanden in cache geplaatst, waardoor de prestaties van serveraanroepen van Commerce worden verhoogd, inclusief pagina's, Ajax-aanroepen en eindpunten.
Bewerk het apcu.ini
-bestand en voeg het volgende toe:
extension=apcu.so
[apcu]
apc.enabled = 1
Webserver
Magento biedt volledige ondersteuning voor de Nginx- en Apache-webservers. Commerce biedt voorbeelden van aanbevolen configuratiebestanden in de bestanden <magento_home>/nginx.conf.sample
(Nginx) en <magento_home>.htaccess.sample
(Apache). Het Nginx-voorbeeld bevat instellingen voor betere prestaties en is zo ontworpen dat weinig herconfiguratie nodig is. Enkele van de belangrijkste die configuratiebeste praktijken in het steekproefdossier worden bepaald omvatten:
- Instellingen voor het in cache plaatsen van statische inhoud in een browser
- Instellingen voor geheugen en uitvoertijd voor PHP
- Instellingen voor compressie van inhoud
U zou het aantal draden voor de verwerking van het inputverzoek ook moeten vormen, zoals hieronder vermeld:
MaxRequestWorkers
/etc/httpd/conf/httpd.conf
(CentOS)MySQL
Dit document bevat geen uitgebreide MySQL afstemmingsinstructies, omdat elke winkel en omgeving anders zijn, maar we kunnen wel enkele algemene aanbevelingen doen.
Er zijn veel verbeteringen aangebracht in MySQL 5.7.9. We zijn ervan overtuigd dat MySQL met goede standaardinstellingen is gedistribueerd. De meest kritieke instellingen zijn:
innodb_buffer_pool_instances
innodb_buffer_pool_size
innodb_buffer_pool_instances
en innodb_buffer_pool_size
op, zodat elke instantie van de bufferpool ten minste 1 GB bedraagt.max_connections
max_connections
moet correleren met het totale aantal PHP threads dat is geconfigureerd in de toepassingsserver. Een algemene aanbeveling zou 300 zijn voor een klein milieu en 1000 voor een middelgroot milieu.innodb_thread_concurrency
innodb_thread_concurrency = 2 * (NumCPUs + NumDisks)
Varnish
Magento raadt u ten zeerste aan Varnish te gebruiken als de cache-server voor alle pagina's voor uw winkel. De module PageCache is nog steeds aanwezig in de codebase, maar moet alleen voor ontwikkelingsdoeleinden worden gebruikt. Deze mag niet samen met of in plaats van Varnish worden gebruikt.
Installeer Varnish op een aparte server vóór de weblaag. Het zou alle inkomende verzoeken moeten goedkeuren en in het voorgeheugen ondergebrachte paginaaKopieën verstrekken. Als u Varnish wilt toestaan effectief te werken met beveiligde pagina's, kan een SSL-proxy vóór Varnish worden geplaatst. Nginx kan voor dit doel worden gebruikt.
Commerce verspreidt een voorbeeldconfiguratiebestand voor Varnish (versies 4 en 5) dat alle aanbevolen instellingen voor de prestaties bevat. De meest kritieke prestaties zijn onder andere:
- Achterste gezondheidscontrole pollt de Commerce server om te bepalen of het op een geschikte manier antwoordt.
- wijze van de Grace staat u toe om Varnish op te dragen om een voorwerp in geheim voorgeheugen voorbij zijn Tijd aan Levende (TTL) periode te houden en deze stapelinhoud te dienen als Commerce niet gezond is of als de verse inhoud nog niet is gehaald.
- de wijze van Saint zwarte lijsten ongezonde Commerce servers voor een configureerbare hoeveelheid tijd. Hierdoor kunnen ongezonde backends geen verkeer dienen wanneer Varnish als taakverdelingsmechanisme wordt gebruikt.
Zie Geavanceerde Varnish configuratievoor meer informatie over het uitvoeren van deze eigenschappen.
Elementprestaties optimaliseren
Over het algemeen raden we u aan uw elementen (afbeeldingen, JS, CSS, enzovoort) op te slaan op een CDN voor optimale prestaties.
Als voor uw site geen groot aantal landinstellingen hoeft te worden geïmplementeerd en uw servers zich in hetzelfde gebied bevinden als de meeste klanten, kan het zijn dat u aanzienlijke prestatiewinsten tegen een lagere kostprijs kunt behalen door uw middelen op te slaan in Varnish in plaats van een CDN te gebruiken.
Als u uw elementen in Varnish wilt opslaan, voegt u de volgende VCL-items toe aan het default.vcl
-bestand dat door Commerce voor Varnish 5 wordt gegenereerd.
Voeg aan het einde van de instructie if
voor PURGE-aanvragen in de subroutine vcl_recv
het volgende toe:
# 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;
}
Zoek in de subroutine vcl_backend_response
naar de instructie if
die de cookie voor GET
- of HEAD
-aanvragen ongedaan maakt.
Het bijgewerkte if
-blok moet er als volgt uitzien:
# 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";
}
}
Start de Varnish -server opnieuw om in de cache opgeslagen middelen te verwijderen wanneer u uw site upgradet of elementen implementeert/bijwerkt.
In cache plaatsen en sessieservers
Magento biedt een aantal opties voor het opslaan van de cache en sessiegegevens, waaronder Redis, Memcache, bestandssysteem en database. Enkele van deze opties worden hieronder besproken.
Eén webknooppunt instellen
Als u al uw verkeer met slechts één Webknoop van plan bent te dienen, het niet steek houdt om uw geheime voorgeheugen op een verre server van Redis te zetten. Gebruik in plaats daarvan het bestandssysteem of een lokale Redis-server. Als u het bestandssysteem wilt gebruiken, plaatst u de cachemappen op een volume dat is gekoppeld aan een RAM-bestandssysteem. Als u een lokale Redis-server wilt gebruiken, raden wij u sterk aan Redis te configureren, zodat er sockets voor directe verbindingen worden gebruikt in plaats van gegevens via HTTP uit te wisselen.
Meerdere webknooppunten instellen
Redis is de beste optie voor het instellen van meerdere webknooppunten. Omdat Commerce actief veel gegevens in cache plaatst voor betere prestaties, moet u rekening houden met uw netwerkkanaal tussen de webknooppunten en de Redis-server. U wilt niet dat het kanaal een knelpunt voor aanvraagverwerking wordt.