ACP2E-4908: Los catálogos grandes causan un uso excesivo de la memoria Redis o Valkey

La revisión ACP2E-4908 corrige el problema en el cual los catálogos grandes podrían causar un uso excesivo de memoria en Valkey (o Redis) porque se crearon entradas de caché de diseño independientes para cada producto en cada vista de tienda. Esta revisión está disponible cuando está instalado Quality Patches Tool (QPT) 1.1.83. El ID del parche es ACP2E-4908. Este problema está programado para solucionarse en Adobe Commerce 2.4.10.

Productos y versiones afectados

El parche se ha creado para la versión de Adobe Commerce:

  • Adobe Commerce (todos los métodos de implementación) 2.4.8-p4

Compatible con versiones de Adobe Commerce:

  • Adobe Commerce (todos los métodos de implementación) >=2.4.8 <2.4.10
NOTE
El parche podría ser aplicable a otras versiones con las nuevas versiones de Quality Patches Tool. Para comprobar si el parche es compatible con su versión de Adobe Commerce, actualice el paquete magento/quality-patches a la última versión y compruebe la compatibilidad en la página Quality Patches Tool: buscar parches ​. Utilice el ID de parche como palabra clave de búsqueda para localizar el parche.

Problema

Los catálogos grandes pueden causar un uso excesivo de la memoria en Redis o Valkey porque se crean entradas de caché de diseño independientes para cada producto en cada vista de tienda.

Pasos a seguir:

  1. Configure Valkey (o Redis) como el backend de caché predeterminado.

  2. Edite app/etc/env.php y establezca el bloque cache.frontend.default en:

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

    Luego flush: bin/magento cache:flush.

  3. Genere la sujeción de rendimiento medio:

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

    Esto produce 3 sitios web × 3 grupos de tiendas × 3 vistas de tiendas, 24 000 productos simples + 640 configurables, 33 conjuntos de atributos, 50 000 pedidos. Calcula 10 min en una máquina rápida.

  4. Restablecer Valkey db1 y calentar:

    code language-none
    valkey-cli -h <host> -n 1 FLUSHDB
    bin/magento cache:flush
    
  5. Rastrear páginas de productos entre tiendas. Genere una lista de muestra y pulse 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 el espacio en caché de 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
    

    Amplíe la rastrea (o use large.xml/extra_large.xml y una herramienta de carga real como siege/work) para alcanzar el régimen de 10 000 claves/1,7 GB del cliente.

Resultados esperados:

El rendimiento no se ve afectado cuando la compresión está habilitada.

Resultados reales:

  • Las claves LAYOUT_FRONTEND_STORE Redis consumen una cantidad de espacio considerable.
  • En una instalación nueva de instalación de instalación media, después de 200 visitas al producto: aproximadamente 564 claves LAYOUT_FRONTEND_STORE y used_memory_human de aproximadamente 20 MB (frente a los aproximadamente 10 MB de línea de base antes de la rastrea): aproximadamente 2,8 claves de caché de DISEÑO por visita de página de producto, lo que aumenta linealmente con los productos únicos visitados × tiendas.

Aplicar el parche

Para aplicar parches individuales, utilice los siguientes vínculos según el método de implementación:

Lectura relacionada

Para obtener más información sobre Quality Patches Tool, consulte:

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