[Alleen PaaS]{class="badge informative" title="Is alleen van toepassing op Adobe Commerce op Cloud-projecten (door Adobe beheerde PaaS-infrastructuur) en op projecten in het veld."}

Aanbevolen procedures voor Redis-serviceconfiguratie

  • Redis L2-cache configureren
  • Redis-slave-verbinding inschakelen
  • Toetsen vooraf laden
  • Ophaalcache inschakelen
  • De Redis-cache scheiden van de Redis-sessie
  • De Redis-cache comprimeren en gzip gebruiken voor hogere compressie

Redis L2-cache configureren

Configureer de L2-cache van Redis door de implementatievariabele REDIS_BACKEND in het .magento.env.yaml -configuratiebestand in te stellen.

stage:
  deploy:
    REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'

Voor milieuconfiguratie op de infrastructuur van de Wolk, zie REDIS_BACKENDin Commerce op de Gids van de Infrastructuur van de Wolk.

Voor installaties op-gebouw, zie Redis pagina cachingin de Gids van de Configuratie vormen.

NOTE
Controleer of u de nieuwste versie van het pakket ece-tools 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.

Grootte van L2-cachegeheugen (Adobe Commerce Cloud)

L2 geheim voorgeheugen gebruikt a tijdelijk dossiersysteemals opslagmechanisme. Vergeleken met gespecialiseerde zeer belangrijke gegevensbestandsystemen, heeft een tijdelijk dossiersysteem geen zeer belangrijk verwijderingsbeleid om geheugengebruik te controleren.

Het gebrek aan controle van het geheugengebruik kan het L2 geheim voorgeheugengebruik veroorzaken om in tijd te groeien door het oude geheime voorgeheugen te accumuleren.

Om geheugenuitputting van L2 geheim voorgeheugenimplementaties te vermijden, ontruimt Adobe Commerce de opslag wanneer een bepaalde drempel wordt bereikt. De standaardwaarde is 95%.

Het is belangrijk om het maximale gebruik van het L2-cachegeheugen aan te passen op basis van de projectvereisten voor cacheopslag. Gebruik een van de volgende methoden om de grootte van de geheugencache te configureren:

  • Maak een ondersteuningsticket om groottewijzigingen van de /dev/shm -montage aan te vragen.
  • Pas de eigenschap cleanup_percentage op toepassingsniveau aan om het maximale vulpercentage van de opslagruimte te beperken. Het resterende vrije geheugen kan door andere diensten worden gebruikt.
    U kunt de configuratie in de plaatsingsconfiguratie onder de groep van de geheim voorgeheugenconfiguratie aanpassen cache/frontend/default/backend_options/cleanup_percentage.
NOTE
De cleanup_percentage configureerbare optie is geïntroduceerd in Adobe Commerce 2.4.4.

De volgende code toont een voorbeeldconfiguratie in het .magento.env.yaml dossier:

stage:
  deploy:
    REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
    CACHE_CONFIGURATION:
      _merge: true
      frontend:
        default:
          backend_options:
            cleanup_percentage: 90

De vereisten van het geheime voorgeheugen kunnen variëren gebaseerd op projectconfiguratie en douanecode van de douanederde. Het bereik van de grootte van het L2-cachegeheugen maakt het mogelijk dat de L2-cache werkt zonder te veel drempelresultaten.
In het ideale geval zou het geheugengebruik in de L2-cache zich op een bepaald niveau onder de drempelwaarde moeten stabiliseren, alleen 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 gebruikend het volgende CLI bevel en zoekend de /dev/shm lijn.
Het gebruik kan per knooppunt variëren, maar het moet in dezelfde waarde worden omgezet.

df -h

Redis-slave-verbinding inschakelen

Schakel een Redis-slave-verbinding in het .magento.env.yaml -configuratiebestand in zodat slechts één knooppunt lees- en schrijfverkeer kan afhandelen en de andere knooppunten het alleen-lezen verkeer afhandelen.

stage:
  deploy:
    REDIS_USE_SLAVE_CONNECTION: true

Zie REDIS_USE_SLAVE_CONNECTIONin 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 voorgeheugenin de Gids van de Configuratie.

WARNING
Vorm __ geen Redis slave verbinding voor de projecten van de wolkeninfrastructuur met a geschraapte/gespleten architectuur. Dit veroorzaakt Redis verbindingsfouten. Zie opnieuw configuratiebegeleidingin Commerce op de gids van de Infrastructuur van de Wolk.

Toetsen vooraf laden

Als u gegevens tussen pagina's wilt hergebruiken, geeft u de toetsen voor het vooraf laden op in het configuratiebestand van .magento.env.yaml .

stage:
  deploy:
    REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
    CACHE_CONFIGURATION:
      _merge: true
      frontend:
        default:
          id_prefix: '061_'                       # Prefix for keys to be preloaded
          backend_options:
            preload_keys:                         # List the keys to be preloaded
              - '061_EAV_ENTITY_TYPES:hash'
              - '061_GLOBAL_PLUGIN_LIST:hash'
              - '061_DB_IS_UP_TO_DATE:hash'
              - '061_SYSTEM_DEFAULT:hash'

Voor installaties op-gebouw, zie Redis preload eigenschapin de Gids van de Configuratie.

Ophaalcache inschakelen

Verminder vergrendelingstijd en verbeter de prestaties—vooral bij het omgaan met talloze Blokken en Cache keys—door een verouderde cache te gebruiken en tegelijkertijd een nieuwe cache te genereren. Stale cache inschakelen en cachetypen definiëren in het configuratiebestand van config.php (alleen cloud):

'cache' => [
        'frontend' => [
            'stale_cache_enabled' => [
                'backend' => '\\Magento\\Framework\\Cache\\Backend\\RemoteSynchronizedCache',
                'backend_options' => [
                    'remote_backend' => '\\Magento\\Framework\\Cache\\Backend\\Redis',
                    'remote_backend_options' => [
                        'persistent' => 0,
                        'server' => 'localhost',
                        'database' => '4',
                        'port' => '6370',
                        'password' => ''
                    ],
                    'local_backend' => 'Cm_Cache_Backend_File',
                    'local_backend_options' => [
                        'cache_dir' => '/dev/shm/'
                    ],
                    'use_stale_cache' => true,
                ],
                'frontend_options' => [
                    'write_control' => false,
                ],
            ]
        ],
        'type' => [
            'default' => ['frontend' => 'default'],
            'layout' => ['frontend' => 'stale_cache_enabled'],
            'block_html' => ['frontend' => 'stale_cache_enabled'],
            'reflection' => ['frontend' => 'stale_cache_enabled'],
            'config_integration' => ['frontend' => 'stale_cache_enabled'],
            'config_integration_api' => ['frontend' => 'stale_cache_enabled'],
            'full_page' => ['frontend' => 'stale_cache_enabled'],
            'translate' => ['frontend' => 'stale_cache_enabled']
        ],
    ]
NOTE
In het vorige voorbeeld, is het full_page geheime voorgeheugen niet relevant voor Adobe Commerce op de projecten van de wolkeninfrastructuur, omdat zij Fastlygebruiken.

Voor het vormen van installaties op-gebouw, zie het geheim voorgeheugenopties van de Stalein de Gids van de Configuratie.

Afzonderlijke Redis-cache en sessieinstanties

Door de Redis-cache te scheiden van de Redis-sessie kunt u de cache en de sessies onafhankelijk beheren. Het verhindert geheim voorgeheugenkwesties zittingen te beïnvloeden, die opbrengst zouden kunnen beïnvloeden. Elke Redis-instantie wordt op de eigen basis uitgevoerd, wat de prestaties verbetert.

  1. Werk het configuratiebestand van .magento/services.yaml bij.

    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
    
  2. Werk het configuratiebestand van .magento.app.yaml bij.

    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"
    
  3. Verzend een kaartje van de Steun van Adobe Commerceom de levering van een nieuwe instantie te verzoeken Redis gewijd aan zittingen op de milieu's van de Productie en van het Staging. Neem de bijgewerkte configuratiebestanden .magento/services.yaml en .magento.app.yaml op. Dit zal geen onderbreking veroorzaken, maar het vereist een plaatsing om de nieuwe dienst te activeren.

  4. Controleer of de nieuwe instantie wordt uitgevoerd en noteer het poortnummer.

    code language-bash
    echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
    
  5. Voeg het poortnummer toe aan het configuratiebestand van .magento.env.yaml .

    note important
    IMPORTANT
    Configureer de opnieuw-sessiepoort alleen als ece-tools deze niet automatisch kan detecteren vanuit de definitie van de MAGENTO_CLOUD_RELATIONSHIPS opnieuw-sessieservice.
    note note
    NOTE
    disable_locking moet zijn ingesteld op 1 .
    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
    
  6. Verwijder zittingen van het standaardgegevensbestand(db 0) op Redis geheim voorgeheugeninstantie.

    code language-bash
    redis-cli -h 127.0.0.1 -p 6374 -n 0 FLUSHDB
    

Tijdens plaatsing, zou u de volgende lijnen in moeten zien bouwen en logboekopstellen:

W:   - Downloading colinmollenhour/credis (1.11.1)
W:   - Downloading colinmollenhour/php-redis-session-abstract (v1.4.5)
...
W:   - Installing colinmollenhour/credis (1.11.1): Extracting archive
W:   - Installing colinmollenhour/php-redis-session-abstract (v1.4.5): Extracting archive
...
[2022-08-17 01:13:40] INFO: Version of service 'redis' is 6.0
[2022-08-17 01:13:40] INFO: Version of service 'redis-session' is 6.0
[2022-08-17 01:13:40] INFO: redis-session will be used for session if it was not override by SESSION_CONFIGURATION

Cachecompressie

Als u meer dan 6 GB Redis maxmemory gebruikt, kunt u de compressie van het geheime voorgeheugen gebruiken om de ruimte te verminderen die door de sleutels wordt verbruikt. Houd er rekening mee dat er een compromis is met de prestaties aan de clientzijde. Als u over vrije cpu's beschikt, laat het toe. Zie Redis van het Gebruik voor zittingsopslagin de Gids van de Configuratie.

stage:
  deploy:
    REDIS_BACKEND: '\Magento\Framework\Cache\Backend\RemoteSynchronizedCache'
    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%)

Redis asynchrone bevriezing inschakelen (lazyfree)

Om lazyfree op Adobe Commerce op wolkeninfrastructuur toe te laten, leg een kaartje van de Steun van Adobe Commerce voorverzoekend de volgende configuratie Redis toegepast op uw milieu(s):

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, ontlaadt Redis geheugenterugwinning aan achtergronddraden voor uitzettingen, vervalsingen, server-in werking gestelde schrapt, schrapt de gebruiker, en duplodataset flushes. Dit vermindert het blokkeren van de belangrijkste-draad en kan verzoekvertraging verminderen.

NOTE
De optie 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.
WARNING
Omdat het vrijmaken op de achtergrond plaatsvindt, blijft het geheugen dat door verwijderde, verlopen of verwijderde toetsen wordt gebruikt, toegewezen totdat de achtergrondthreads het werk voltooien. Als uw Redis al onder een krappe geheugendruk staat, kunt u voorzichtig testen en de geheugendruk eerst verlagen (bijvoorbeeld door de cache van het blok uit te schakelen voor specifieke gevallen en cache- en sessies te scheiden, zoals hierboven beschreven).

Redis 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 Commercevoor het verzoeken van de hieronder configuratie. Dit kan de doorvoer verbeteren door socket lezen/schrijven en het parseren van opdrachten vanuit de hoofdthread te offloaden, ten koste van een hoger CPU-gebruik. Valideer onder lading en controleer uw gastheren.

io-threads-do-reads yes
io-threads 8 # choose a value lower than the number of CPU cores (check with nproc), then tune under load
NOTE
I/O-threads komen alleen overeen met client I/O en parseren. De uitvoering van de opdracht Redis blijft single-threaded.
WARNING
Het inschakelen van I/O-threads kan het CPU-gebruik verhogen en niet elke werklast ten goede komen. Begin met een conservatieve waarde en benchmark. Als de latentie stijgt of CPU verzadigt, verlaagt u io-threads of schakelt u de leesvolgorde in I/O-threads uit.

Time-outs en nieuwe pogingen voor client opnieuw inschakelen

Verhoog de tolerantie van de cacheclient voor voorbijgaande verzadiging door de achtergrondopties aan te passen in .magento.env.yaml :

stage:
  deploy:
    CACHE_CONFIGURATION:
      _merge: true
      frontend:
        default:
          backend_options:
            read_timeout: 10
            connect_retries: 5

Deze montages verhogen cliënttolerantie aan korte congestie op Redis door het antwoord te verlengen wachtend venster en verbindingsopstelling opnieuw te proberen. Hierdoor kunnen intermitterende cannot connect to localhost:6370 en read-timeout fouten tijdens korte pieken worden verminderd.

NOTE
Ze zijn geen oplossing voor aanhoudende overbelasting.

Aanvullende informatie

recommendation-more-help
754cbbf3-3a3c-4af3-b6ce-9d34390f3a60