ACP2E-4908: Catálogos grandes causam uso excessivo de memória Redis ou Valkey

O patch ACP2E-4908 corrige o problema em que catálogos grandes poderiam causar uso excessivo de memória no Valkey (ou Redis) porque foram criadas entradas de cache de layout separadas para cada produto em cada exibição de loja. Este patch está disponível quando o Quality Patches Tool (QPT) 1.1.83 está instalado. A ID do patch é ACP2E-4908. Observe que esse problema está programado para ser corrigido no Adobe Commerce 2.4.10.

Produtos e versões afetados

O patch foi criado para a versão do Adobe Commerce:

  • Adobe Commerce (todos os métodos de implantação) 2.4.8-p4

Compatível com as versões do Adobe Commerce:

  • Adobe Commerce (todos os métodos de implantação) >=2.4.8 <2.4.10
NOTE
O patch pode se tornar aplicável a outras versões com as novas versões do Quality Patches Tool. Para verificar se o patch é compatível com a sua versão do Adobe Commerce, atualize o pacote magento/quality-patches para a versão mais recente e verifique a compatibilidade na Quality Patches Tool: página Procurar patches. Use a ID do patch como palavra-chave de pesquisa para localizar o patch.

Problema

Catálogos grandes podem causar uso excessivo de memória no Redis ou Valkey porque entradas de cache de layout separadas são criadas para cada produto em cada exibição de loja.

Etapas a serem reproduzidas:

  1. Configure Valkey (ou Redis) como o back-end do cache padrão.

  2. Edite app/etc/env.php e defina o bloco cache.frontend.default como:

    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',
    ],
    

    Depois flush: bin/magento cache:flush.

  3. Gere o dispositivo de desempenho médio:

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

    Isso produz 3 sites × 3 grupos de lojas × 3 visualizações de loja, 24K simples + 640 produtos configuráveis, 33 conjuntos de atributos, 50K pedidos. Espere 10 minutos em uma máquina rápida.

  4. Redefinir Valkey db1 e aquecer:

    code language-none
    valkey-cli -h <host> -n 1 FLUSHDB
    bin/magento cache:flush
    
  5. Rastrear páginas de produtos entre lojas. Crie uma lista de exemplos e acesse cada 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. Observe o espaço físico do cache LAYOUT:

    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
    

    Ajuste a escala do rastreo (ou use o large.xml/extra_large.xml e uma ferramenta de carga real como cerco/trabalho) para alcançar as teclas de 10.000 / regime de 1,7 GB do cliente.

Resultados esperados:

O desempenho não é afetado quando a compactação está ativada.

Resultados reais:

  • As chaves LAYOUT_FRONTEND_STORE Redis consomem uma quantidade significativa de espaço.
  • Em uma nova instalação de fixação média, após 200 ocorrências de produto: aproximadamente 564 chaves LAYOUT_FRONTEND_STORE e used_memory_human de aproximadamente 20 MB (em comparação com a linha de base de aproximadamente 10 MB antes do rastreo) — aproximadamente 2,8 chaves de cache de LAYOUT por ocorrência de página de produto, crescendo linearmente com produtos exclusivos visitados × lojas.

Aplicar o patch

Para aplicar patches individuais, use os links a seguir, dependendo do método de implantação:

Leitura relacionada

Para saber mais sobre Quality Patches Tool, consulte:

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