Aanbevelingen voor software

De volgende software is vereist voor productieinstanties van Commerce :

Voor multiserver plaatsingen, of voor verkopers die op het schrapen van hun zaken plannen, adviseren wij het volgende:

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 :

INFO
Het toelaten van net.ipv4.tcp_tw_reuse heeft geen effect op inkomende verbindingen.
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.

INFO
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.
INFO
De aanwezigheid van om het even welke het profileren en het zuiveren uitbreidingen kan de reactietijd van uw pagina's negatief beïnvloeden. Als voorbeeld, kan een actieve xDebug module zonder enige zuiveringszitting de tijd van de paginareactie met maximaal 30% verhogen.

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:

Webserver
Kenmerknaam
Locatie
Verwante informatie
Nginx
worker_connections
/etc/nginx/nginx.conf (Debian)
het Tuning NGINX voor Prestaties
Apache 2.2
MaxClients
/etc/httpd/conf/httpd.conf (CentOS)
het Afstemmen van Prestaties Apache
Apache 2.4
MaxRequestWorkers
/etc/httpd/conf/httpd.conf (CentOS)
Gemeenschappelijke Richtlijnen van Apache MPM

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:

Parameter
Standaard
Beschrijving
innodb_buffer_pool_instances
8
De standaardwaarde is ingesteld op 8 om problemen te voorkomen met meerdere threads die toegang proberen te krijgen tot dezelfde instantie.
innodb_buffer_pool_size
128 MB
Gecombineerd met de veelvoudige hierboven beschreven groepsinstanties, betekent dit een standaardgeheugentoewijzing van 1024MB. De totale grootte wordt over alle bufferpools verdeeld. Voor de beste efficiëntie geeft u een combinatie van innodb_buffer_pool_instances en innodb_buffer_pool_size op, zodat elke instantie van de bufferpool ten minste 1 GB bedraagt.
max_connections
150
De waarde van de parameter 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
0
De beste waarde voor deze configuratie moet met de volgende formule worden berekend: 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.

INFO
Als u honderden en duizenden gelijktijdige verzoeken moet indienen, hebt u mogelijk een kanaal van maximaal 1 Gbit (of zelfs nog breder) aan uw Redis-server nodig.
recommendation-more-help
c0c5bbed-4957-4162-81bc-120c837a1894