ACP2E-4908: Große Kataloge verursachen übermäßige Redis- oder Valkey-Speichernutzung

Mit dem Patch ACP2E-4908 wird das Problem behoben, dass große Kataloge zu übermäßiger Speichernutzung in Valkey (oder Redis) führen konnten, da für jedes Produkt in jeder Shop-Ansicht separate Layout-Cache-Einträge erstellt wurden. Dieser Patch ist verfügbar, wenn Quality Patches Tool (QPT) 1.1.83 installiert ist. Die Patch-ID lautet ACP2E-4908. Dieses Problem wird voraussichtlich in Adobe Commerce 2.4.10 behoben.

Betroffene Produkte und Versionen

Der Patch wird für die Adobe Commerce-Version erstellt:

  • Adobe Commerce (alle Bereitstellungsmethoden) 2.4.8-p4

Kompatibel mit Adobe Commerce-Versionen:

  • Adobe Commerce (alle Bereitstellungsmethoden) >=2.4.8 <2.4.10
NOTE
Der Patch könnte mit neuen Quality Patches Tool-Versionen auch für andere Versionen gelten. Um zu überprüfen, ob der Patch mit Ihrer Adobe Commerce-Version kompatibel ist, aktualisieren Sie das magento/quality-patches auf die neueste Version und überprüfen Sie die Kompatibilität auf der Seite Quality Patches Tool: Nach Patches suchen. Verwenden Sie die Patch-ID als Suchbegriff, um den Patch zu finden.

Problem

Große Kataloge können zu übermäßiger Speichernutzung in Redis oder Valkey führen, da für jedes Produkt in jeder Shop-Ansicht separate Layout-Cache-Einträge erstellt werden.

Schritte zur Reproduktion:

  1. Konfigurieren Sie Valkey (oder Redis) als Standard-Cache-Backend.

  2. Bearbeiten Sie app/etc/env.php und legen Sie den cache.frontend.default-Block auf Folgendes fest:

    code language-none
    'default' => [
        'id_prefix' => '061_',
        'backend_options' => [
            'server' => 'valkey',          // your Valkey/Redis hostname
            'port' => '6379',
            'database' => '1',
            'password' => '',
            'compress_data' => '0',        // key recipe — leaves XML uncompressed
            'persistent' => 0,
            'read_timeout' => 10,
            'connect_retries' => 2,
        ],
        'backend' => 'redis',
    ],
    

    Dann flush: bin/magento cache:flush.

  3. Erzeugen Sie die Vorrichtung mit mittlerer Leistung:

    code language-none
    bin/magento setup:performance:generate-fixtures \
        setup/performance-toolkit/profiles/ce/medium.xml
    

    Dies erzeugt 3 Websites × 3 Store-Gruppen × 3 Store-Ansichten, 24.000 einfache + 640 konfigurierbare Produkte, 33 Attributsätze, 50.000 Bestellungen. Rechnen Sie mit 10 Min. auf einer schnellen Maschine.

  4. Valkey db1 zurücksetzen und aufwärmen:

    code language-none
    valkey-cli -h <host> -n 1 FLUSHDB
    bin/magento cache:flush
    
  5. Crawlen Produktseiten über Stores hinweg. Erstellen Sie eine Beispielliste und klicken Sie auf jede URL:

    code language-none
    # Build 200 random product URLs across stores 1–4
    mysql -e "SELECT CONCAT(s.code,'|',u.request_path)
              FROM url_rewrite u JOIN store s ON u.store_id=s.store_id
              WHERE u.entity_type='product'
                AND u.request_path NOT LIKE 'catalog/product/%'
                AND s.store_id BETWEEN 1 AND 4
              ORDER BY RAND() LIMIT 200;" magento > urls.txt
    
    while IFS='|' read -r STORE URL; do
        curl -s -o /dev/null "http://<base-url>/${URL}?___store=${STORE}"
    done < urls.txt
    
  6. Beachten Sie den LAYOUT Cache-Platzbedarf:

    code language-none
    valkey-cli -h <host> -n 1 --scan --pattern "*LAYOUT_FRONTEND_STORE*" | wc -l
    valkey-cli -h <host> INFO memory | grep used_memory_human
    

    Skalieren Sie den crawlen (oder verwenden Sie large.xml/extra_large.xml und ein echtes Lasttool wie Belagerung/Wrk), um den 10.000-Schlüssel-/1,7-GB-Standard des Kunden zu erreichen.

Erwartete Ergebnisse:

Die Leistung wird durch die aktivierte Komprimierung nicht beeinträchtigt.

Tatsächliche Ergebnisse:

  • Die LAYOUT_FRONTEND_STORE Redis verbrauchen sehr viel Platz.
  • Bei einer neuen Installation mit mittlerer Ausstattung nach 200 Produkttreffern: ca. 564 LAYOUT_FRONTEND_STORE und used_memory_human von ca. 20 MB (gegenüber ca. 10 MB Baseline vor dem crawlen) - ca. 2,8 LAYOUT-Cache-Schlüssel pro Produktseitentreffer, die linear mit individuellen Produkten, die × Geschäften besucht werden, zunehmen.

Patch anwenden

Verwenden Sie je nach Bereitstellungsmethode die folgenden Links, um einzelne Patches anzuwenden:

Verwandtes Lesen

Weitere Informationen zu Quality Patches Tool finden Sie unter:

recommendation-more-help
commerce-operations-help-tools