Molnwebbplatsen är långsam
I den här artikeln ges rekommendationer om hur du kan göra din Adobe Commerce-webbplats på molninfrastrukturen bättre under belastad trafik och hur du kan minska belastningen.
Berörda versioner och utgåvor
- Adobe Commerce om molninfrastruktur, alla versioner
Problem
Steg som ska återskapas
- Besök Adobe Commerce store.
- Bläddra bland en kategorisida.
- Lägg en produkt i kundvagnen.
Förväntat resultat
Webbplatsen är responsiv och det går snabbt att lägga en produkt i kundvagnen.
Faktiskt resultat
Webbplatsen är långsam eller så är kategorisidorna snabba men kundvagnssidan är långsam.
Felsökning av steg och lösningar
Följ de här stegen för att spåra orsaken till den långsamma prestandan och åtgärda den. Du kan växla det första och det andra steget, men du kan bara fortsätta med att blockera IP-adresser om optimeringen av cacheinställningarna inte hjälper.
- Kontrollera cacheträffhastigheten för sidor med hög trafik och minska mängden data som uppdateras mycket.
- Kontrollera den totala träfffrekvensen för platscachen och verifiera den allmänna cachen/snabbkonfigurationen.
- Identifiera de webbklienter som orsakar den höga serverbelastningen och blockera IP:n som orsakar den höga belastningen.
I följande stycken finns mer information för varje steg.
Steg 1: Kontrollera cacheträffhastigheten för sidor med hög trafik
Det första steget till att åtgärda en webbplats som störs av stor trafik är att se till att sidor med störst trafik, som butikens hemsida och kategorisidor på den översta nivån cachelagras korrekt.
Du kan ta reda på cacheminnets träfffrekvenser för de här sidorna genom att granska X-Cache
HTTP-rubriker med cURL, vilket beskrivs i Kontrollera cacheminnet med cURL i Snabbdokumentation. Du kan också kontrollera samma rubriker på nätverksfliken i utvecklarverktygsfältet i din favoritwebbläsare.
I allmänhet respekterar svarshuvuden som kommer från programmet, men om alla sidhuvuden är inställda på "cachelagra inte" och för sidan "förfaller tidigare" kan du inte cachelagra sidan.
Felsökning för sidor med hög trafik
Om indexsidan har en låg träfffrekvens kan du åtgärda den genom att minska mängden data som är starkt uppdaterade på sidan.
Steg 2: Kontrollera den totala träfffrekvensen för platscache
Så här kontrollerar du den totala cacheminnesträffhastigheten:
-
Få snabbt inloggningsuppgifter för din Adobe Commerce i molninfrastrukturmiljö.
-
Kör följande Linux/macOS cURL-kommando för att kontrollera träffhastigheten för din webbplats under de senaste 30 minuterna, och ersätt och med värdena för dina snabbinloggningsuppgifter:
curl -H "Fastly-Key: " https://api.fastly.com/stats/service//field/hit_ratio?by=minute | json_pp
Du kan också kontrollera tidigare träfffrekvenser under den sista dagen eller månaden genom att ändra frågealternativet för tidsintervall från
?by=minute
till?by=hour
eller?by=day
. Mer information om hur du får status för snabbcache finns i Frågealternativ i dokumentationen Snabbt.Alternativet
| json_pp
skriver ut JSON-svarsutdata med verktygetjson_pp
. Om du får ett_'json_pp not found'_-fel installerar du verktygetjson_pp
eller använder ett annat kommandoradsverktyg för JSON-utskrift. Du kan också ta bort parametern| json_pp
och köra kommandot igen. JSON-svarsutdata är inte formaterade, men du kan rensa upp det genom en JSON-finjustering.
En träfffrekvens över 0,90 eller 90 % anger att helsidescachen fungerar.
En träfffrekvens under 0,85 eller 85 % kan tyda på ett platskonfigurationsproblem, eller så har du ett tillägg från tredje part installerat som inte tillåter att innehållet cachelagras.
Felsökning av den totala träfffrekvensen för cache
- Identifiera när träfffrekvensen började sjunka med hjälp av träffstatistik per timme och dag. Om träfffrekvensen plötsligt skulle minska vid samma tidpunkt som du distribuerade en ändring till din webbplats bör du överväga att återställa ändringen tills webbplatsinläsningen går ner.
- Kontrollera konfigurationen i Commerce Admin, under Lagrar > Konfiguration > Avancerat > System > Helsidescache. Kontrollera att värdet TTL för publikt innehåll inte är för lågt.
- Kontrollera att du har överfört VCL-kodfragment.
- Om du använder anpassade VCL-kodfragment kan du felsöka dem för korrekt användning av åtgärderna "pass" eller "pipe": de bör användas med försiktighet och i alla lägen med något slags tillstånd. Mer tips finns i Anpassade snabbvalsbaserade VCL-kodfragment i utvecklardokumentationen.
Steg 3: Identifiera de webbplatser som orsakar hög serverbelastning
Du kan använda någon av följande metoder för att få information om IP-adresserna som har åtkomst till din Adobe Commerce-butik.
- Kontrollera HTTP-åtkomstloggarna via en SSH-session.
- Kontakta Adobe Commerce support för att få en lista över IP-adresser som orsakar hög belastning på webbplatsen.
Kontrollera HTTP-åtkomstloggarna
Om du vill visa platsens åtkomstlogg kör du följande kommando från den lokala utvecklingsmiljön:
magento-cloud log access
Visa fler rader med
--lines
alternativ, till exempel:
magento-cloud log access --lines=500
Du kan visa den här loggen och kontrollera om en stor del av begäranden kommer från en viss IP-adress. Ett annat sätt är att använda awk
, sort
och uniq
för att automatiskt räkna de oftast förekommande IP-adresserna i loggen, enligt följande:
magento-cloud log access --lines 2000 | awk '{print $1}' | sort | uniq -c | sort
-nr
Om
magento-cloud log
kommandot fungerar inte, du kan ansluta till fjärrservern med SSH och kontrollera loggfilen på /var/log/access.log
När du har identifierat IP-adresserna som orsakar hög serverbelastning kan du blockera dem genom att konfigurera ett IP-blockeringslista från Commerce Admin-panelen, under Lager > Konfiguration > AVANCERAT > System > Fullständig sidcache > Snabbkonfiguration > Blockera.
Om du inte kan komma åt din administratör på grund av stor belastning kan du använda API:t Fastly för att konfigurera blockeringsreglerna:
-
Skapa åtkomstkontrollistan enligt beskrivningen i Arbeta med åtkomstkontrollistor med API:tSnabbt.
-
I avsnittet
recv
skapar du ett VCL-fragment med följande innehåll, som har ersatt ACL_NAME_GOES_HERE med namnet på den åtkomstkontrollista som skapades i föregående steg:code language-none if( req.http.Fastly-Client-IP ~ ACL_NAME_GOES_HERE ) { error 403 "Forbidden"; }
Mer information om att blockera IP-adresser finns i guiden för Snabb Adobe Commerce-modul i GitHub.