Magento 2 patch Redis lock session

Al usar Redis como almacenamiento de sesión en Magento 2, las solicitudes simultáneas o muy próximas a la misma sesión pueden encolarse debido al sistema de bloqueo que impide escrituras concurrentes.

Este comportamiento afecta especialmente a entornos con múltiples llamadas AJAX (como el proceso de pago) o interfaces sin interfaz gráfica, generando retrasos innecesarios incluso cuando la mayoría de las solicitudes solo leen la sesión y no la modifican.

Para mejorar el rendimiento, Yonn Trimoreau desarrolló un parche para la biblioteca «colinmollenhour/php-redis-session-abstract» utilizada por Magento 2, que restringe el uso de bloqueos únicamente a las operaciones de escritura. Esto reduce significativamente la latencia en escenarios de alta concurrencia.

Acabo de crear una versión actualizada del parche compatible con Magento 2.4.8 y la versión 2.1.2 de la biblioteca mencionada.

https://github.com/olivertar/m2_redis_patch

Agradecimientos

A Colin Mollenhour por crear y mantener esta biblioteca para toda la comunidad PHP.

A Rostislav Suleimanov, quien explicó magistralmente el problema y las diferentes opciones para mitigarlo.

Y finalmente, a Yonn Trimoreau, quien dedicó su tiempo a resolver el problema y creó el parche que adapté.

Lecturas recomendadas: – Almacenamiento de sesiones de Redis en Magento 2: Problemas de rendimiento y soluciones (https://www.linkedin.com/pulse/magento-2-redis-session-storage-performance-issues-suleimanov-qfdae/)

Implementar bloqueo de escritura en lugar de bloqueo de lectura (https://github.com/colinmollenhour/php-redis-session-abstract/issues/50)

Bloqueo innecesario de sesiones de Redis en todas las solicitudes HTTP GET: afecta a las solicitudes GraphQL concurrentes de PWA Studio (https://github.com/magento/magento2/issues/34758)

Usar Redis para el almacenamiento de sesiones (experienceleague.adobe.com/en/docs/commerce-operations/configuration-guide/cache/redis/redis-session)