답변:
나는 New Relic에서도 이것을 많이 보았다.
내가 본 것에서 몇 가지 다른 원인이 있지만이 문제에 대해 완전히 이해하지 못했지만 최근에 살펴본 것입니다. 여기 내 결과가 있습니다.
Magento의 모든 컨트롤러 작업은 필요 여부에 관계없이 세션을 사용합니다. 세션은 Mage_Core_Controller_Varien_Action :: preDispatch 에서 열심히 인스턴스화됩니다.
세션 잠금이 활성화 된 경우 요청 기간 동안 요청이 완료 될 때까지 세션이 잠겨 있음을 의미합니다. 아직 세션 잠금을 해제하는 코드를 찾지 못했지만 어딘가에있을 것이라고 확신합니다.
궁극적으로 이는 동일한 세션을 사용하여 한 위치에서 Magento 컨트롤러 작업에 대한 여러 동시 요청을 발생시키는 경우 해당 요청 중 일부가 세션을 완료하고 잠금을 해제하여 진행할 때까지 기다려야 함을 의미합니다. 나는 보통 이것을 새로운 유물에 대한 느린 트랜잭션으로 Mage_Core_Model_Session_Abstract_Varien::start
~ 30 초 동안 멈췄습니다 (세션 잠금 대기 시간 초과라고 생각합니다).
New Relic에 대한이 보고서는 내가 본 것처럼 여러 가지 단점이 있습니다.
나는 이것에 대한 몇 가지 일반적인 원인을 보았습니다.
Baidu와 Yandex와 같은 크롤러는 약간 무례하고 웹 사이트를 강타합니다. 동일한 세션을 사용하여 여러 요청을 발생시키는 한 위치에서 실행되고 세션 잠금 메커니즘을 트립하므로 New Relic에서 느린 트랜잭션이 표시됩니다.
니스 웹 사이트에서는 고객 별 데이터를주의해서로드해야하며 일부 웹 사이트는 Magento 백엔드에 대한 ajax 호출을 사용하여 필요한 데이터를 가져 와서이를 관리합니다. 또한 백엔드에 대한 ajax 호출을 사용하여 상품 판매시 재고 잔량과 같은 상품별 정보를 얻는 일부 웹 사이트를 보았습니다.
단일 페이지가 페이지로드시 백엔드에 대한 여러 ajax 호출을 트리거하는 경우 세션 잠금 메커니즘을 트리거 할 수 있습니다. Magento 백엔드에 대한 더 많은 아약스 호출은 잠금을 경험할 가능성이 높습니다.
ajax 호출을 사용하는 대신 백엔드에 대한 새로운 호출 인 Edge Side Includes를 사용한다는 점을 제외하고는 위와 동일합니다.
나는 이것을 아직 행동하지 않았으므로 여전히 이론적으로는 이론적이지만 앞으로 몇 개월 동안 내가하고있는 일입니다.
나는 Mage Titans UK 2016 컨퍼런스 에서이 문제를 제기했으며 Fabrizio Branca는 다음 모듈을 지적했습니다 : https://github.com/AOEpeople/Aoe_BlackHoleSession .
정규식을 기반으로 모듈은 봇이 실제 세션을 생성하지 못하게하므로 세션 잠금이 발생하지 않으며 무례한 봇에 의해 세션 리소스가 타격을받지 않는 이점이 있습니다. 봇은 더 이상 New Relic 수치를 오염시키지 않아야합니다.
캐시 된 페이지에서 고객 데이터를 얻기위한 ajax / ESI 호출의 경우 내가 볼 수있는 작업이 없습니다. 고객 별 데이터를 검색하려면 세션에 액세스해야합니다.
그러나 카탈로그 한정 데이터와 같은 카탈로그 특정 데이터를 얻기위한 ajax / ESI 호출의 경우 해당 요청에 대해 세션이 전혀 필요하지 않습니다. 미래에 대한 계획은 Aoe_BlackHoleSession
모듈에 대한 확장을 시험하여 세션이없는 특정 URL에 대한 요청을 사일로 오프 할 수 있도록하는 것입니다.
나는 ESI의 내부에 익숙하지 않기 때문에 슬프게도 언급 할 것이 너무 없다.
회의 중에 Fabrizio Branca는 아무런 영향을주지 않고 세션 잠금을 완전히 비활성화 할 수 있다고 전했다.