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
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:
-
Configure Valkey (ou Redis) como o back-end do cache padrão.
-
Edite
app/etc/env.phpe 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. -
Gere o dispositivo de desempenho médio:
code language-none bin/magento setup:performance:generate-fixtures \ setup/performance-toolkit/profiles/ce/medium.xmlIsso 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.
-
Redefinir Valkey
db1e aquecer:code language-none valkey-cli -h <host> -n 1 FLUSHDB bin/magento cache:flush -
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 -
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_humanAjuste a escala do rastreo (ou use o
large.xml/extra_large.xmle 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_STORERedis 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_STOREeused_memory_humande 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:
- Adobe Commerce ou Magento Open Source local: Quality Patches Tool > Uso no guia Quality Patches Tool
- Adobe Commerce na infraestrutura em nuvem: Atualizações e patches > Aplicar patches no guia do Commerce na infraestrutura em nuvem
Leitura relacionada
Para saber mais sobre Quality Patches Tool, consulte: