Aanbevolen werkwijzen voor Redis en Valkey-serviceconfiguratie
Gebruik deze aanbevelingen om Redis of Valkey voor Adobe Commerce caching en zittingen te vormen.
- L2-cache configureren
- Enable slave connection
- Toetsen vooraf laden
- Ophaalcache inschakelen
- Afzonderlijke cache en sessie
- De cache comprimeren
- Configuratievoorbeelden
ece-tools -pakket gebruikt. Als niet, verbetering aan de recentste versie . U kunt de versie controleren die in uw lokale omgeving is geïnstalleerd met de opdracht composer show magento/ece-tools CLI.L2-cache configureren
Configureer de L2-cache door de REDIS_BACKEND - of VALKEY_BACKEND -implementatievariabele in te stellen in het .magento.env.yaml -configuratiebestand.
Gebruik voor Redis:
| code language-yaml |
|---|
|
Voor milieuconfiguratie op de infrastructuur van de Wolk, zie REDIS_BACKEND configuratieverwijzing in Commerce op de Gids van de Infrastructuur van de Wolk.
Voor installaties op-gebouw, zie Redis pagina caching in de Gids van de Configuratie vormen.
Gebruik voor Valkey:
| code language-yaml |
|---|
|
Voor milieuconfiguratie op wolkeninfrastructuur, zie VALKEY_BACKEND configuratieverwijzing in Commerce op de Gids van de Infrastructuur van de Wolk.
Voor installaties op-gebouw, zie Valkey in de Gids van de Configuratie vormen.
Grootte L2-cachegeheugen voor Adobe Commerce Cloud
L2 geheim voorgeheugen gebruikt a tijdelijk dossiersysteem (/dev/shm) als zijn opslagmechanisme. In tegenstelling tot gespecialiseerde sleutelwaardewinkels, heeft tmpfs geen zeer belangrijk uitzettingsbeleid, zodat kan het geheugengebruik onbegrensd groeien. Om uitputting te verhinderen, ontruimt Adobe Commerce automatisch de L2 opslag wanneer het gebruik een configureerbare drempel (95% door gebrek) bereikt. U kunt het geheugengebruik beheren door een grotere /dev/shm hoeveelheid aan te vragen of door de opschoningsdrempel te verlagen.
Pas het maximale L2-cachegeheugengebruik aan op basis van uw projectvereisten. Gebruik een van de volgende methoden:
- Maak een ondersteuningsticket om de koppelingsgrootte van
/dev/shmaan te passen. Voor dit scenario raadt Adobe aan de grootte van de/dev/shm-montage in te stellen op 15 GB. - Pas de eigenschap
cleanup_percentageop toepassingsniveau aan om het opslaggebruik te beperken en geheugen vrij te maken dat beschikbaar is voor andere services.
U kunt de configuratie in de plaatsingsconfiguratie onder de groep van de geheim voorgeheugenconfiguratie aanpassencache/frontend/default/backend_options/cleanup_percentage.
cleanup_percentage configureerbare optie is geïntroduceerd in Adobe Commerce 2.4.4.De volgende voorbeelden tonen de configuratiecode in het .magento.env.yaml dossier:
| code language-yaml |
|---|
|
| code language-yaml |
|---|
|
De vereisten van het geheime voorgeheugen variëren gebaseerd op uw projectconfiguratie en douanecode van de douanederde. Grootte van L2-cachegeheugen zodat de cache kan werken zonder frequente drempelwaarden te bereiken.
In het ideale geval stabiliseert het geheugengebruik van de L2-cache zich onder de drempel om te voorkomen dat de opslagruimte vaak wordt gewist.
U kunt het gebruik van het L2 geheime voorgeheugengeheugen op elke knoop van de cluster controleren door het volgende CLI bevel in werking te stellen en de /dev/shm lijn te herzien.
df -h /dev/shm
Het gebruik kan over knopen variëren, maar het zou in een gelijkaardige waarde moeten samenkomen.
Aangepaste mappen voor L2-cache configureren
Wanneer het optimaliseren van L2 geheim voorgeheugenprestaties, kunt u verkiezen om de lokale geheim voorgeheugendossiers in een douane, krachtige folder, zoals een schijf van RAM op te slaan (/dev/shm/).
Voor consistentie in de hele toepassing en om gefragmenteerde cacheopslag te voorkomen, configureert u zowel de specifieke L2-backendopties als het algemene directoryregister in het app/etc/env.php -bestand.
Beste praktijken: bepaal zowel local_backend_options['cache_dir'] als globaal directories['cache']['path'].
local_backend_options['cache_dir']: hiermee stuurt u de cacheadapter voor de back-end (bijvoorbeeldCm_Cache_Backend_File) naar de gesynchroniseerde L2-cachebestanden op de opgegeven locatie.directories['cache']['path']: werkt het Adobe CommerceDirectoryList-register bij en stelt het aangepaste pad in als de definitieve systeemcachemap voor de gehele toepassing.
Meten van gesplitste cachemappen en GlusterFS-segmentatiefouten voorkomen
Als u het aangepaste pad uitsluitend definieert in de local_backend_options , werkt de L2-cache-engine correct, maar blijft het algemene toepassingsregister var/cache herkennen als de standaardcachelocatie.
Deze configuratiestoornis resulteert in een "split-brain" scenario waarbij externe extensies of kernfallback-processen tijdelijke bestanden naar de standaardmap var/cache schrijven.
Kritieke Gevolgen voor de Wolk van de Handel van Adobe: Op Pro architectuur, wordt de var/ folder opgezet op een gedeeld verdeeld dossiersysteem. Dwingend hoog-snelheidsgeheime voorgeheugen I/O over dit netwerk overweldigt de cliënt en is een primaire trekker voor GlusterFS segmentatiefouten en cluster-brede stroomonderbrekingen. Als u beide instellingen configureert, blijft alle I/O-cache volledig op de lokale, krachtige schijf staan.
Voorbeeld van configuratie
Als u één, verenigde cachemap wilt afdwingen, werkt u het env.php -bestand bij en voegt u beide configuraties in:
return [
// 1. Override the global directory registry
'directories' => [
'cache' => [
'path' => '/dev/shm/magento_cache'
]
],
// 2. Configure the L2 cache engine
'cache' => [
'frontend' => [
'default' => [
'backend' => '\\Magento\\Framework\\Cache\\Backend\\RemoteSynchronizedCache',
'backend_options' => [
'remote_backend' => '\\Magento\\Framework\\Cache\\Backend\\Redis',
'server' => '127.0.0.1',
'port' => '6379',
'database' => '1',
// ... other redis configurations ...
'local_backend' => 'Cm_Cache_Backend_File',
'local_backend_options' => [
'cache_dir' => '/dev/shm/magento_cache'
]
]
]
]
],
// ...
];
Enable slave connection
Schakel de slave-verbinding in het .magento.env.yaml -bestand in als u wilt dat Adobe Commerce een extra alleen-lezen cacheverbinding gebruikt voor lezen terwijl het primaire eindpunt voor schrijven wordt gebruikt. Deze configuratie kan leesbelasting op de primaire cacheservice verminderen en leesverkeer effectiever distribueren.
Gebruik voor Redis:
| code language-yaml |
|---|
|
Voor milieuconfiguratie op de infrastructuur van Commerce Cloud, zie REDIS_USE_SLAVE_CONNECTION in Commerce op de Gids van de Infrastructuur van de Wolk.
Voor Adobe Commerce-installaties op locatie configureert u de nieuwe Redis-casimplementatie met de opdrachten bin/magento setup . Zie Redis van het Gebruik voor standaardgeheime voorgeheugen in de Gids van de Configuratie.
Gebruik voor Valkey:
| code language-yaml |
|---|
|
Voor milieuconfiguratie op de infrastructuur van Commerce Cloud, zie VALKEY_USE_SLAVE_CONNECTION in Commerce op de Gids van de Infrastructuur van de Wolk.
Voor Adobe Commerce-installaties op locatie configureert u de nieuwe Valkey-casimplementatie met behulp van de bin/magento setup -opdrachten. Zie Valkey in de Gids van de Configuratie vormen.
Toetsen vooraf laden
Magento laadt cachemarangen doorgaans één voor één uit Redis of Valkey. Met de functie voor vooraf laden kunt u een lijst met veelgebruikte sleutels opgeven die Magento in één pijpleiding ophaalt bij eerste toegang tijdens een aanvraag. Magento bewaart vervolgens de opgehaalde waarden in het PHP-geheugen voor de rest van dat verzoek, waardoor herhaalde ronde reizen naar Redis of Valkey worden gereduceerd en de opstartprestaties van deze toetsen worden verbeterd.
U kunt veelgebruikte toetsen identificeren door actieve opdrachten op Redis of Valkey te controleren:
De vooraf te laden sleutels worden gevormd in het .magento.env.yaml configuratiedossier.
| code language-yaml |
|---|
|
Voer de volgende opdracht uit om de toetsen weer te geven:
| code language-terminal |
|---|
|
Druk na 10 seconden op Ctrl+C . Voer vervolgens de volgende opdracht uit:
| code language-terminal |
|---|
|
In dit logbestand worden de toetsen weergegeven die u vooraf kunt laden. Voer de volgende opdracht uit om de inhoud van een toets weer te geven:
| code language-terminal |
|---|
|
Voor installaties op-gebouw, zie Redis preload eigenschap in de Gids van de Configuratie.
De vooraf te laden sleutels worden gevormd in het .magento.env.yaml configuratiedossier.
| code language-yaml |
|---|
|
Voer de volgende opdracht uit om de toetsen weer te geven:
| code language-terminal |
|---|
|
Druk na 10 seconden op Ctrl+C . Voer vervolgens de volgende opdracht uit:
| code language-terminal |
|---|
|
In dit logbestand worden de toetsen weergegeven die u vooraf kunt laden. Voer de volgende opdracht uit om de inhoud van een toets weer te geven:
| code language-terminal |
|---|
|
Voor installaties op-gebouw, zie Valkey preload eigenschap in de Gids van de Configuratie.
Ophaalcache inschakelen
Stale cache is een L2 cache-functie van RemoteSynchronizedCache. Als deze optie is ingeschakeld, kan Adobe Commerce vanaf /dev/shm een bestaande lokale cachewaarde gebruiken, terwijl een ander verzoek al dezelfde vermelding opnieuw genereert in plaats van dat elke gelijktijdige aanvraag wacht. Hiermee vermindert u cachestempels en vergrendelt u conflicten tijdens het opnieuw genereren van dure cachegegevens.
Hoe werkt het
Met RemoteSynchronizedCache bewaart Magento twee exemplaren van elke cachevermelding: een lokale kopie in /dev/shm en een externe kopie in Redis of Valkey. Wanneer de externe kopie niet beschikbaar is en er al een regeneratievergrendeling voor die sleutel bestaat, kunnen gelijktijdige aanvragen de vorige lokale waarde ontvangen in plaats van te wachten tot de nieuwe waarde is geschreven.
Als u verouderde cache wilt inschakelen, configureert u deze in het .magento.env.yaml -bestand.
Voor Redis:
| code language-yaml |
|---|
|
Voor Valkey:
| code language-yaml |
|---|
|
full_page geheim voorgeheugentype is niet relevant voor Adobe Commerce op de infrastructuurprojecten van de Wolk omdat zij Fastly gebruiken.Voor installaties op-gebouw, zie het geheim voorgeheugenopties van de Stale in de Gids van de Configuratie.
default , die een 'verval-cache'-gedrag toepast op alle cachemarkeringen die gebruikmaken van die voorkant. Magento core-cachetypen werken over het algemeen zoals u verwacht met deze instelling. Als uw project echter aangepaste code of extensies bevat die via de algemene \Magento\Framework\App\Cache API (bijvoorbeeld $this->cache->save() ) naar de cache schrijven zonder een toegewezen cachefront, kunnen die gegevens ook tijdens het opnieuw genereren worden gebruikt voor waarden van het type static.default wordt onbruikbaar gemaakt en laat het slechts voor geselecteerde geheim voorgeheugentypes toe, zoals algemeen op-gebouw wordt gedaan.Statische cache per cachetype afzonderlijk inschakelen
U kunt een uitgebreide cache alleen inschakelen voor geselecteerde cachetypen door een toegewezen cachefront in .magento.env.yaml te definiëren en de geselecteerde cachetypen hieraan toe te wijzen.
Voor een correcte werking moet de aangepaste voorzijde worden gedefinieerd als een volledige voorzijde onder CACHE_CONFIGURATION.frontend . Het is niet voldoende alleen use_stale_cache: true te definiëren voor een nieuwe naam voor de voorzijde.
de configuraties van het Voorbeeld
Voor Redis:
| code language-yaml |
|---|
|
Voor Valkey:
| code language-yaml |
|---|
|
stale_cache_enabled zodat de nieuwe voorkant hetzelfde gedrag behoudt.Afzonderlijke cache- en sessieinstanties
Als u de cache scheidt van de sessies, kunt u deze onafhankelijk beheren. Het vermindert geschil tussen geheim voorgeheugen en zittingsverkeer, verhindert geheim voorgeheugengerelateerde druk zittingen te beïnvloeden, en staat elke instantie Redis of Valkey toe om voor zijn eigen werkbelasting worden gerangschikt en worden gestemd.
Voer de onderstaande stappen uit om een speciaal exemplaar voor sessies beschikbaar te stellen:
-
Werk het configuratiebestand van
.magento/services.yamlbij.code language-yaml mysql: type: mysql:10.4 disk: 35000 redis: type: redis:6.0 redis-session: # This is for the new Redis instance type: redis:6.0 search: type: elasticsearch:7.9 disk: 5000 rabbitmq: type: rabbitmq:3.8 disk: 2048 -
Werk het configuratiebestand van
.magento.app.yamlbij.code language-yaml relationships: database: "mysql:mysql" redis: "redis:redis" redis-session: "redis-session:redis" # Relationship of the new Redis instance search: "search:elasticsearch" rabbitmq: "rabbitmq:rabbitmq" -
Vraag om een nieuwe instantie Redis die gewijd is aan sessies over productie- en parkeeromgevingen.
Verzend een kaartje van de Steun van Adobe Commerce . Neem de bijgewerkte configuratiebestanden
.magento/services.yamlen.magento.app.yamlop.Deze update veroorzaakt geen onderbreking, maar het vereist een plaatsing om de nieuwe dienst te activeren.
-
Controleer of de nieuwe instantie actief is en noteer het poortnummer.
code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp -
Voeg het poortnummer toe aan het configuratiebestand van
.magento.env.yaml.note important IMPORTANT Configureer de Redis-sessiepoort alleen als ece-toolsdeze niet automatisch kan detecteren in de definitie van deMAGENTO_CLOUD_RELATIONSHIPSRedis-sessieservice.note note NOTE Stel disable_lockingin op1voor de beste prestaties. In zeldzame gevallen waarin zeldzame situaties voorkomen als gevolg van hoge gelijktijdige sessieactiviteit, stelt u deze in op0om vergrendeling mogelijk te maken.code language-yaml SESSION_CONFIGURATION: _merge: true redis: timeout: 5 disable_locking: 1 bot_first_lifetime: 60 bot_lifetime: 7200 max_lifetime: 2592000 min_lifetime: 60 -
Verwijder zittingen van het standaardgegevensbestand (
db 0) op Redis geheim voorgeheugeninstantie.code language-terminal redis-cli -h 127.0.0.1 -p 6370 -n 0 FLUSHDB
-
Werk het configuratiebestand van
.magento/services.yamlbij.code language-yaml mysql: type: mysql:10.4 disk: 35000 valkey: type: valkey:8.0 valkey-session: # This is for the new Valkey instance type: valkey:8.0 search: type: elasticsearch:7.9 disk: 5000 rabbitmq: type: rabbitmq:3.8 disk: 2048 -
Werk het configuratiebestand van
.magento.app.yamlbij.code language-yaml relationships: database: "mysql:mysql" valkey: "valkey:valkey" valkey-session: "valkey-session:valkey" # Relationship of the new Valkey instance search: "search:elasticsearch" rabbitmq: "rabbitmq:rabbitmq" -
Vraag om een nieuwe instantie Valkey die aan zittingen op Productie en het Opvoeren milieu's wordt gewijd.
Verzend een kaartje van de Steun van Adobe Commerce . Neem de bijgewerkte configuratiebestanden
.magento/services.yamlen.magento.app.yamlop.Deze update veroorzaakt geen onderbreking, maar het vereist een plaatsing om de nieuwe dienst te activeren.
-
Controleer of de nieuwe instantie actief is en noteer het poortnummer.
code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp -
Voeg het poortnummer toe aan het configuratiebestand van
.magento.env.yaml.note important IMPORTANT Configureer de poort voor Valkey-sessies alleen als ece-toolsdeze niet automatisch kan detecteren vanuit de definitie van deMAGENTO_CLOUD_RELATIONSHIPSValkey-sessieservice.note note NOTE Stel disable_lockingin op1voor de beste prestaties. In zeldzame gevallen waarin zeldzame situaties voorkomen als gevolg van hoge gelijktijdige sessieactiviteit, stelt u deze in op0om vergrendeling mogelijk te maken.code language-yaml SESSION_CONFIGURATION: _merge: true redis: # keep 'redis' even if you are using Valkey. timeout: 5 disable_locking: 1 bot_first_lifetime: 60 bot_lifetime: 7200 max_lifetime: 2592000 min_lifetime: 60 -
Verwijder zittingen van het standaardgegevensbestand (
db 0) op de Valkey geheim voorgeheugeninstantie.code language-terminal valkey-cli -h 127.0.0.1 -p 6370 -n 0 FLUSHDB
Cachecompressie
Als u meer dan 6 GB Redis of Valkey maxmemory gebruikt, kunt u cachecompressie inschakelen om de ruimte te verminderen die door sleutels wordt verbruikt. Houd er rekening mee dat deze instelling de client-side prestaties voor geheugenbesparingen op zich neemt. Als u over onbenutte CPU-capaciteit beschikt, kunt u het ook inschakelen. Zie Redis van het Gebruik voor zittingsopslag of Valkey van het Gebruik voor zittingsopslag in de Gids van de Configuratie.
stage:
deploy:
CACHE_CONFIGURATION:
_merge: true
frontend:
default:
backend_options:
compress_data: 4 # 0-9
compress_tags: 4 # 0-9
compress_threshold: 20480 # don't compress files smaller than this value
compression_lib: 'gzip' # snappy and lzf for performance, gzip for high compression (~69%)
Asynchrone vastzetten inschakelen
Om lazyfree op Adobe Commerce op wolkeninfrastructuur toe te laten, leg een kaartje van de Steun van Adobe Commerce voor verzoekend dat de volgende Redis of Valkey configuratie op uw milieu's wordt toegepast:
lazyfree-lazy-eviction yes
lazyfree-lazy-expire yes
lazyfree-lazy-server-del yes
replica-lazy-flush yes
lazyfree-lazy-user-del yes
Wanneer lazyfree wordt toegelaten, schrapt Redis of Valkey geheugenterugwinning aan achtergronddraden voor uitzettingen, vervalsingen, server-in werking gestelde schrapt, schrapt de gebruiker, en replica dataset flushes. Dit vermindert het blokkeren van de belangrijkste-draad en kan verzoekvertraging verminderen.
lazyfree-lazy-user-del yes zorgt ervoor dat de opdracht DEL zich gedraagt als UNLINK , die de koppelingen met toetsen direct ongedaan maakt en hun geheugen asynchroon vrijmaakt.Multithreaded I/O inschakelen
Om Redis I/O-threading op Adobe Commerce op wolkeninfrastructuur toe te laten, leg een kaartje van de Steun van Adobe Commerce voor verzoekend om de I/O-threading hieronder configuratie. Deze configuratie kan productie verbeteren door contactdooslezen te ontladen en schrijft en bevel het ontleden van de belangrijkste draad, ten koste van hoger gebruik CPU. Valideer onder lading en controleer uw gastheren.
Voor Redis:
| code language-text |
|---|
|
Voor Valkey:
| code language-text |
|---|
|
io-threads of schakelt u de leesvolgorde in I/O-threads uit.Time-outs en nieuwe pogingen voor de client vergroten
Verhoog de tolerantie van de Redis- of Valkey-cache-client voor korte verzadigingsperiodes door de achtergrondopties aan te passen in .magento.env.yaml .
stage:
deploy:
CACHE_CONFIGURATION:
_merge: true
frontend:
default:
backend_options:
connect_retries: 3 # Number of connection retries
remote_backend_options:
read_timeout: 10 # Timeout
Met deze instellingen kunt u intermitterende verbindings- en leestime-outfouten tijdens korte pieken verminderen door de instelling van de verbinding opnieuw te proberen en meer tijd vrij te maken voor reacties van Redis of Valkey.
Configuratievoorbeelden
Gebruik de volgende voorbeelden als uitgangspunt voor uw Redis- of Valkey-serviceconfiguraties.
Alle aanbevelingen voor best practices toepassen
| code language-yaml |
|---|
|
| code language-yaml |
|---|
|
Pas alle aanbevelingen van best practices toe en scheiden de stapelcache op cachetype
| code language-yaml |
|---|
|
| code language-yaml |
|---|
|
Aanvullende informatie
Zie de volgende verwante onderwerpen: