• Julio Argüello @jarguello.seidor.es ·
  • Julio Argüello @jarguello.seidor.es ·

    Tiempo de Respuesta

    Durante los tests

    image

    Todo el día

    image

  • Julio Argüello @jarguello.seidor.es ·
  • Julio Argüello @jarguello.seidor.es ·

    Home Page Analysis

    Breakdown

    image

    (Las horas en el eje de abscisas no son correctas. Parece un bug en NewRelic)

    image

  • Julio Argüello @jarguello.seidor.es ·

    Product Detail Page Analysis

    image

    (Las horas en el eje de abscisas no son correctas. Parece un bug en NewRelic)

    image

  • Julio Argüello @jarguello.seidor.es ·

    Product Grid Page Analysis

    image

    (Las horas en el eje de abscisas no son correctas. Parece un bug en NewRelic)

    image

    Edited by Julio Argüello
  • Julio Argüello @jarguello.seidor.es ·

    Resumen Transacciones

    hybris 1

    image

    hybris 2

    image

    hybris 3

    image

    hybris 4

    image

    hybris 5

    image

    hybris 6

    image

    hybris 7

    image

    hybris 8

    image

    hybris 9

    image

    hybris 10

    image

  • Julio Argüello @jarguello.seidor.es ·

    ProductCarouselComponentController

    image

    grep  ProductCarouselComponentController *.log > analyzed/product-carousel-component-controller
    grep -B30  ProductCarouselComponentController *.log > analyzed/product-carousel-component-controller-B30
    more analyzed/product-carousel-component-controller-B30 | awk '{print $3}' | sort | uniq -c | sort > analyzed/product-carousel-component-controller-B30-histogram

    Top calls

    • 2959 pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    • 308 pe.com.marathon.facades.populators.MrtPromotionPopulator.populate(MrtPromotionPopulator.java:37)
    • 292 pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getMarketingPromotionForGridPageWithVariants(DefaultMrtPromotionService.java:30)
    • 274 pe.com.marathon.core.strategies.impl.DefaultMrtMarketingPromotionStrategy.getMarketingPromotionForGridPage(DefaultMrtMarketingPromotionStrategy.java:65)-
    • 308 pe.com.marathon.facades.populators.MrtPromotionPopulator.populate(MrtPromotionPopulator.java:37)
    • 292 pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getMarketingPromotionForGridPageWithVariants(DefaultMrtPromotionService.java:30)
    • 274 pe.com.marathon.core.strategies.impl.DefaultMrtMarketingPromotionStrategy.getMarketingPromotionForGridPage(DefaultMrtMarketingPromotionStrategy.java:65)
    • 268 pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:45)
    • 264 pe.com.marathon.core.strategies.impl.DefaultMrtMarketingPromotionStrategy.getProductPromotions(DefaultMrtMarketingPromotionStrategy.java:179)
    • 256 de.hybris.platform.promotionengineservices.promotionengine.impl.DefaultPromotionEngineService.getAbstractProductPromotions(DefaultPromotionEngineService.java:301)
    • 143 de.hybris.platform.commercefacades.product.converters.populator.ProductPricePopulator.populate(ProductPricePopulator.java:1)
    • 142 de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.getLowestVariantPrice(DefaultCommercePriceService.java:77)
    • 142 de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.getFromPriceForProduct(DefaultCommercePriceService.java:46)
    • 142 de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.getAllVariantPrices(DefaultCommercePriceService.java:88)
    • 142 de.hybris.platform.commercefacades.product.converters.populator.ProductPricePopulator.populate(ProductPricePopulator.java:72)
    • 137 de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.fillAllVariantPrices(DefaultCommercePriceService.java:106)

    MrtPromotionPopulator

    • Es quien invoca a DefaultMrtPromotionService.getPromotionsByVariants( bajo el siguiente patrón image

    Siempre se usa bajo el siguiente patrón:

    at de.hybris.platform.promotionengineservices.promotionengine.impl.DefaultPromotionEngineService.getPromotionsForProduct(DefaultPromotionEngineService.java:869)
    at de.hybris.platform.promotionengineservices.promotionengine.impl.DefaultPromotionEngineService.getAbstractProductPromotions(DefaultPromotionEngineService.java:301)
    at pe.com.marathon.core.strategies.impl.DefaultMrtMarketingPromotionStrategy.getProductPromotions(DefaultMrtMarketingPromotionStrategy.java:179)
    at pe.com.marathon.core.strategies.impl.DefaultMrtMarketingPromotionStrategy.getMarketingPromotionForGridPage(DefaultMrtMarketingPromotionStrategy.java:65)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getMarketingPromotionForGridPageWithVariants(DefaultMrtPromotionService.java:23)
    at pe.com.marathon.facades.populators.MrtPromotionPopulator.populate(MrtPromotionPopulator.java:37)
    at pe.com.marathon.facades.populators.MrtPromotionPopulator.populate(MrtPromotionPopulator.java:1)
    at de.hybris.platform.converters.impl.DefaultModifableConfigurablePopulator.populate(DefaultModifableConfigurablePopulator.java:70)
    at pe.com.marathon.facades.productcarousel.impl.DefaultMrtProductCarouselFacade.getProductData(DefaultMrtProductCarouselFacade.java:117)
    at pe.com.marathon.facades.productcarousel.impl.DefaultMrtProductCarouselFacade.fetchProductsForNonPreviewMode(DefaultMrtProductCarouselFacade.java:40)

    Como demuestra:

    more analyzed/product-carousel-component-controller-B30 | grep -A3 MrtPromotionPopulator | awk '{print $3}' | sort | uniq -c | sort -r
     308 pe.com.marathon.facades.productcarousel.impl.DefaultMrtProductCarouselFacade.getProductData(DefaultMrtProductCarouselFacade.java:117)
     308 pe.com.marathon.facades.productcarousel.impl.DefaultMrtProductCarouselFacade.fetchProductsForNonPreviewMode(DefaultMrtProductCarouselFacade.java:40)
     308 pe.com.marathon.facades.populators.MrtPromotionPopulator.populate(MrtPromotionPopulator.java:37)
     308 pe.com.marathon.facades.populators.MrtPromotionPopulator.populate(MrtPromotionPopulator.java:1)
     308 de.hybris.platform.converters.impl.DefaultModifableConfigurablePopulator.populate(DefaultModifableConfigurablePopulator.java:70)

    ProductPricePopulator

    El patrón es éste:

    at pe.com.marathon.core.order.price.MrtCatalogAwareEurope1PriceFactory.queryPriceRows4Price(MrtCatalogAwareEurope1PriceFactory.java:89)
    at de.hybris.platform.europe1.jalo.Europe1PriceFactory.matchPriceRowsForInfo(Europe1PriceFactory.java:2371)
    at de.hybris.platform.europe1.jalo.Europe1PriceFactory.getPriceInformations(Europe1PriceFactory.java:1645)
    at de.hybris.platform.europe1.jalo.Europe1PriceFactory.getProductPriceInformations(Europe1PriceFactory.java:1615)
    at de.hybris.platform.jalo.product.Product.getPriceInformations(Product.java:248)
    at de.hybris.platform.jalo.product.Product.getPriceInformations(Product.java:229)
    at de.hybris.platform.commerceservices.price.impl.NetPriceService.getPriceInformationsForProduct(NetPriceService.java:52)
    at de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.getWebPriceForProduct(DefaultCommercePriceService.java:57)
    at de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.fillAllVariantPrices(DefaultCommercePriceService.java:95)
    at de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.getAllVariantPrices(DefaultCommercePriceService.java:88)
    at de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.getLowestVariantPrice(DefaultCommercePriceService.java:77)
    at de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.getFromPriceForProduct(DefaultCommercePriceService.java:46)
    at de.hybris.platform.commercefacades.product.converters.populator.ProductPricePopulator.populate(ProductPricePopulator.java:72)

    Páginas afectadas

    Homepage

    Los tres principales responsables de su bajo rendimiento se explican por la lógica del carrousel de productos:

    image

    t de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService.search(DefaultFlexibleSearchService.java:254)
    at de.hybris.platform.promotionengineservices.dao.impl.DefaultPromotionSourceRuleDao.findPromotions(DefaultPromotionSourceRuleDao.java:295)
    at de.hybris.platform.promotionengineservices.promotionengine.impl.DefaultPromotionEngineService.getPromotionsForProduct(DefaultPromotionEngineService.java:869)
    at de.hybris.platform.promotionengineservices.promotionengine.impl.DefaultPromotionEngineService.getAbstractProductPromotions(DefaultPromotionEngineService.java:301)
    at pe.com.marathon.core.strategies.impl.DefaultMrtMarketingPromotionStrategy.getProductPromotions(DefaultMrtMarketingPromotionStrategy.java:179)
    at pe.com.marathon.core.strategies.impl.DefaultMrtMarketingPromotionStrategy.getMarketingPromotionForGridPage(DefaultMrtMarketingPromotionStrategy.java:65)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:45)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getPromotionsByVariants(DefaultMrtPromotionService.java:50)
    at pe.com.marathon.core.services.impl.DefaultMrtPromotionService.getMarketingPromotionForGridPageWithVariants(DefaultMrtPromotionService.java:30)
    at pe.com.marathon.facades.populators.MrtPromotionPopulator.populate(MrtPromotionPopulator.java:37)
    at pe.com.marathon.facades.populators.MrtPromotionPopulator.populate(MrtPromotionPopulator.java:1)
    at de.hybris.platform.converters.impl.DefaultModifableConfigurablePopulator.populate(DefaultModifableConfigurablePopulator.java:70)
    at pe.com.marathon.facades.productcarousel.impl.DefaultMrtProductCarouselFacade.getProductData(DefaultMrtProductCarouselFacade.java:117)
    at pe.com.marathon.facades.productcarousel.impl.DefaultMrtProductCarouselFacade.fetchProductsForNonPreviewMode(DefaultMrtProductCarouselFacade.java:40)
    at de.hybris.platform.acceleratorfacades.productcarousel.impl.DefaultProductCarouselFacade.collectProducts(DefaultProductCarouselFacade.java:65)
    at pe.com.marathon.storefront.controllers.cms.ProductCarouselComponentController.collectLinkedProducts(ProductCarouselComponentController.java:58)
    at pe.com.marathon.storefront.controllers.cms.ProductCarouselComponentController.fillModel(ProductCarouselComponentController.java:49)
    at pe.com.marathon.storefront.controllers.cms.ProductCarouselComponentController.fillModel(ProductCarouselComponentController.java:1)
    at de.hybris.platform.acceleratorstorefrontcommons.controllers.cms.AbstractCMSComponentController.handleComponent(AbstractCMSComponentController.java:112)
    at de.hybris.platform.acceleratorstorefrontcommons.controllers.cms.AbstractCMSComponentController.handleGet(AbstractCMSComponentController.java:65)
    at pe.com.marathon.storefront.controllers.cms.AbstractAcceleratorCMSComponentController.handleGet(AbstractAcceleratorCMSComponentController.java:45)
    at sun.reflect.GeneratedMethodAccessor561.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at pe.com.marathon.storefront.filters.AcceleratorAddOnFilter.doFilter(AcceleratorAddOnFilter.java:76)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:743)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:603)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:542)
    at pe.com.marathon.storefront.cache.renderer.impl.InnerComponentAwareCachingCMSComponentRenderer.lambda$1(InnerComponentAwareCachingCMSComponentRenderer.java:55)
    at pe.com.marathon.storefront.cache.renderer.impl.InnerComponentAwareCachingCMSComponentRenderer$$Lambda$366/1178517070.execute(Unknown Source)
    at de.hybris.platform.commerceservices.threadcontext.impl.DefaultThreadContextService.executeInContext(DefaultThreadContextService.java:51)
    at pe.com.marathon.storefront.cache.renderer.impl.InnerComponentAwareCachingCMSComponentRenderer.doExecuteInContext(InnerComponentAwareCachingCMSComponentRenderer.java:84)
    at pe.com.marathon.storefront.cache.renderer.impl.InnerComponentAwareCachingCMSComponentRenderer.renderView(InnerComponentAwareCachingCMSComponentRenderer.java:51)
    at de.hybris.platform.acceleratorcms.component.renderer.impl.GenericViewCMSComponentRenderer.renderComponent(GenericViewCMSComponentRenderer.java:85)
    at de.hybris.platform.acceleratorcms.component.renderer.impl.DefaultCMSComponentRendererRegistry.renderComponent(DefaultCMSComponentRendererRegistry.java:80)
    at de.hybris.platform.acceleratorcms.component.slot.impl.DefaultCMSPageSlotComponentService.renderComponent(DefaultCMSPageSlotComponentService.java:334)
    at de.hybris.platform.acceleratorcms.tags2.CMSComponentTag.renderItem(CMSComponentTag.java:298)
    at de.hybris.platform.acceleratorcms.tags2.CMSComponentTag.doStartTag(CMSComponentTag.java:254)
    at org.apache.jsp.WEB_002dINF.views.responsive.pages.layout.landingLayout2Page_jsp._jspx_meth_cms_005fcomponent_005f4(landingLayout2Page_jsp.java:527)
    at org.apache.jsp.WEB_002dINF.views.responsive.pages.layout.landingLayout2Page_jsp._jspx_meth_cms_005fpageSlot_005f4(landingLayout2Page_jsp.java:490)
    at org.apache.jsp.WEB_002dINF.views.responsive.pages.layout.landingLayout2Page_jsp.access$4(landingLayout2Page_jsp.java:468)
    at org.apache.jsp.WEB_002dINF.views.responsive.pages.layout.landingLayout2Page_jsp$Helper.invoke0(landingLayout2Page_jsp.java:738)
    at org.apache.jsp.WEB_002dINF.views.responsive.pages.layout.landingLayout2Page_jsp$Helper.invoke(landingLayout2Page_jsp.java:770)
    at org.apache.jsp.tag.web.responsive.template.page_tag$Helper.invoke2(page_tag.java:618)
    at org.apache.jsp.tag.web.responsive.template.page_tag$Helper.invoke(page_tag.java:654)
    at org.apache.jsp.tag.web.responsive.template.master_tag.doTag(master_tag.java:307)
    Edited by Julio Argüello
  • Julio Argüello @jarguello.seidor.es ·

    ProductPageController

    grep -r ProductPageController.productDetail *.log > analyzed/product-page-controller
    grep -r -B30 ProductPageController.productDetail *.log > analyzed/product-page-controller-B30
    more analyzed/product-page-controller-B30 | awk '{print $3}' | sort | uniq -c | sort -r > analyzed/product-page-controller-B30-histogram

    Top calls

    1891 pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
     606 pe.com.marathon.facades.populators.MrtVariantOptionDataPopulator.populate(MrtVariantOptionDataPopulator.java:41)
     475 de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.getLowestVariantPrice(DefaultCommercePriceService.java:77)
     475 de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.getFromPriceForProduct(DefaultCommercePriceService.java:46)
     475 de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.getAllVariantPrices(DefaultCommercePriceService.java:88)
     466 de.hybris.platform.commercefacades.product.converters.populator.VariantOptionDataPopulator.populate(VariantOptionDataPopulator.java:160)
     461 de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.fillAllVariantPrices(DefaultCommercePriceService.java:106)
     442 de.hybris.platform.commercefacades.product.converters.populator.VariantFullPopulator.populate(VariantFullPopulator.java:1)
     322 de.hybris.platform.commercefacades.product.converters.populator.ProductUrlPopulator.populate(ProductUrlPopulator.java:1)
     315 pe.com.marathon.facades.populators.MrtProductPopulator.populate(MrtProductPopulator.java:38)
     308 pe.com.marathon.storefront.controllers.pages.ProductPageController.productDetail(ProductPageController.java:156)
     275 de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.getWebPriceForProduct(DefaultCommercePriceService.java:57)
     269 de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.fillAllVariantPrices(DefaultCommercePriceService.java:95)
     260 de.hybris.platform.jalo.product.Product.getPriceInformations(Product.java:248)
     260 de.hybris.platform.jalo.product.Product.getPriceInformations(Product.java:229)
     260 de.hybris.platform.europe1.jalo.Europe1PriceFactory.getProductPriceInformations(Europe1PriceFactory.java:1615)
     260 de.hybris.platform.commerceservices.price.impl.NetPriceService.getPriceInformationsForProduct(NetPriceService.java:52)
     259 de.hybris.platform.commercefacades.product.converters.populator.VariantSelectedPopulator.populate(VariantSelectedPopulator.java:44)
     244 de.hybris.platform.europe1.jalo.Europe1PriceFactory.getPriceInformations(Europe1PriceFactory.java:1645)
     232 de.hybris.platform.core.model.product.ProductModel.getVariants(ProductModel.java:1860)
     219 de.hybris.platform.promotionengineservices.promotionengine.impl.DefaultPromotionEngineService.getAbstractProductPromotions(DefaultPromotionEngineService.java:301)
     208 de.hybris.platform.servicelayer.media.impl.DefaultMediaService.getMediaByFormat(DefaultMediaService.java:232)
     208 de.hybris.platform.servicelayer.media.impl.DefaultMediaDao.findMediaByFormat(DefaultMediaDao.java:182)
     208 de.hybris.platform.servicelayer.media.impl.DefaultMediaContainerService.getMediaForFormat(DefaultMediaContainerService.java:59)
     207 pe.com.marathon.core.strategies.impl.DefaultMrtMarketingPromotionStrategy.getMarketingPromotionForPDP(DefaultMrtMarketingPromotionStrategy.java:519)
     206 de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.fillAllVariantPrices(DefaultCommercePriceService.java:101)
     204 pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:69)
     204 pe.com.marathon.core.strategies.impl.DefaultMrtMarketingPromotionStrategy.getProductPromotions(DefaultMrtMarketingPromotionStrategy.java:179)
     190 de.hybris.platform.commercefacades.product.converters.populator.AbstractProductImagePopulator.addImagesInFormats(AbstractProductImagePopulator.java:108)
     171 de.hybris.platform.promotionengineservices.promotionengine.impl.DefaultPromotionEngineService.getPromotionsForProduct(DefaultPromotionEngineService.java:869)
     171 de.hybris.platform.commercefacades.product.converters.populator.ProductGalleryImagesPopulator.populate(ProductGalleryImagesPopulator.java:1)
     167 de.hybris.platform.promotionengineservices.dao.impl.DefaultPromotionSourceRuleDao.findPromotions(DefaultPromotionSourceRuleDao.java:295)
     166 de.hybris.platform.commercefacades.product.converters.populator.ProductGalleryImagesPopulator.populate(ProductGalleryImagesPopulator.java:52)
     117 de.hybris.platform.europe1.jalo.Europe1PriceFactory.matchPriceRowsForInfo(Europe1PriceFactory.java:2371)
     117 de.hybris.platform.commerceservices.stock.impl.DefaultCommerceStockService.getStockLevelForProductAndBaseStore(DefaultCommerceStockService.java:68)
     114 de.hybris.platform.stock.impl.DefaultStockService.getStockLevels(DefaultStockService.java:691)
     113 pe.com.marathon.core.daos.impl.DefaultMrtStockLevelDao.findStockLevels(DefaultMrtStockLevelDao.java:85)
     107 pe.com.marathon.core.order.price.MrtCatalogAwareEurope1PriceFactory.queryPriceRows4Price(MrtCatalogAwareEurope1PriceFactory.java:89)
      97 pe.com.marathon.core.daos.impl.DefaultMrtStockLevelDao.findStockLevelsImpl(DefaultMrtStockLevelDao.java:109)
      92 pe.com.marathon.facades.populators.MrtVariantOptionDataPopulator.hasStockProduct(MrtVariantOptionDataPopulator.java:70)
      90 pe.com.marathon.facades.populators.MrtVariantOptionDataPopulator.populate(MrtVariantOptionDataPopulator.java:47)
      90 pe.com.marathon.facades.populators.MrtVariantOptionDataPopulator.hasStockChildren(MrtVariantOptionDataPopulator.java:60)

    DefaultMrtPromotedProductFacade.getPromotionByVariants(

    at de.hybris.platform.promotionengineservices.promotionengine.impl.DefaultPromotionEngineService.getAbstractProductPromotions(DefaultPromotionEngineService.java:301)
    at pe.com.marathon.core.strategies.impl.DefaultMrtMarketingPromotionStrategy.getProductPromotions(DefaultMrtMarketingPromotionStrategy.java:179)
    at pe.com.marathon.core.strategies.impl.DefaultMrtMarketingPromotionStrategy.getMarketingPromotionForPDP(DefaultMrtMarketingPromotionStrategy.java:519)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:69)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants(DefaultMrtPromotedProductFacade.java:75)
    at pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getProductForCodeAndOptions(DefaultMrtPromotedProductFacade.java:47)
    at pe.com.marathon.storefront.controllers.pages.ProductPageController.populateProductDetailForDisplay(ProductPageController.java:421)

    getLowestVariantPrice, getWebPriceForProduct, getFromPriceForProduct, getAllVariantPrices, fillAllVariantPrices

    at de.hybris.platform.europe1.jalo.Europe1PriceFactory.getProductPriceInformations(Europe1PriceFactory.java:1615)
    at de.hybris.platform.jalo.product.Product.getPriceInformations(Product.java:248)
    at de.hybris.platform.jalo.product.Product.getPriceInformations(Product.java:229)
    at de.hybris.platform.commerceservices.price.impl.NetPriceService.getPriceInformationsForProduct(NetPriceService.java:52)
    at de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.getWebPriceForProduct(DefaultCommercePriceService.java:57)
    at de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.fillAllVariantPrices(DefaultCommercePriceService.java:95)
    at de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.fillAllVariantPrices(DefaultCommercePriceService.java:106)
    at de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.getAllVariantPrices(DefaultCommercePriceService.java:88)
    at de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.getLowestVariantPrice(DefaultCommercePriceService.java:77)
    at de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService.getFromPriceForProduct(DefaultCommercePriceService.java:46)
    at de.hybris.platform.commercefacades.product.converters.populator.VariantOptionDataPopulator.populate(VariantOptionDataPopulator.java:160)
    Edited by Julio Argüello
  • Julio Argüello @jarguello.seidor.es ·

    CategoryPageController

    Solr

    image

    image

    grep -r categorySearch *.log > analyzed/category-search
    grep -B30 -r categorySearch *.log > analyzed/category-search-B30
    more analyzed/category-search-B30 | awk '{print $3}' | sort | uniq -c | sort -r > analyzed/category-search-B30-histogram

    Top Calls

    No hay nada que llame especialmente la atención (si acaso lo correspondiente a Orika)

    productGridPage.jsp

    grep -r productGridPage *.log > analyzed/product-grid-page
    grep -B30 -r productGridPage *.log > analyzed/product-grid-page-B30
    more analyzed/product-grid-page-B30 | awk '{print $3}' | sort | uniq -c | sort -r > analyzed/product-grid-page-B30-histogram
    
    grep -B150 -r productGridPage *.log | more
    grep -B150 -r productGridPage *.log > analyzed/product-grid-page-B150
    more analyzed/product-grid-page-B150 | awk '{print $3}' | sort | uniq -c | sort -r > analyzed/product-grid-page-B150-histogram

    Top Calls

    No hay nada que llame especialmente la atención (si acaso lo correspondiente a MessageSource)

     148 org.springframework.context.support.AbstractMessageSource.getMessageInternal(AbstractMessageSource.java:239)
     147 org.springframework.context.support.AbstractMessageSource.getMessageFromParent(AbstractMessageSource.java:257)
    Edited by Julio Argüello
  • Julio Argüello @jarguello.seidor.es ·

    Primeras Recomendaciones

    Corto Plazo

    De acuerdo con lo ya recomendado en Noviembre 2020 se pone de manifiesto que:

    image

    Tamaño Carruseles de Producto

    Uno de los principales problemas es el tiempo que invierte SAP Commerce en recuperar la información de producto, tanto en ficha como en carruseles.

    Las medidas a continuación contribuyen a aligerar esa carga.

    Si bien también ayudaría reducir el tamaño de esos carruseles.

    Cacheo de ProductCarouselComponent

    Se recomienda habilitar la caché de CMS para ProductCarouselComponent.

    MrtPromotionPopulator

    • Idealmente se habría de cachear este populator empleando psdtocache.
    • Dado que esa extensión no está habilitada en este proyecto y el periodo de implantación (altamente recomendable) es no menos de 1 semana (en función de la criticidad) se puede optar por cachear el siguiente método con @Cacheable o configuración XML:
      • DefaultMrtPromotionService.getMarketingPromotionForGridPageWithVariants

    Se ha de identificar unívocamente la clave de caché:

    • Código de producto.
    • ¿Site? / ¿País?
    • ¿Idioma?
    • ¿Moneda?

    Y las políticas de expiración y/o cronjobs de borrado.

    Precios

    • Idealmente se habría de cachear _productPricePopulatoryVariantOptionDataPopulatorempleandopsdtocache`

    • En su defecto se puede emplear caché de método (de acuerdo con lo apuntado anteriormente) para:

      • de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService#getFromPriceForProduct
      • de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService#getWebPriceForProduct
    • (Por confirmar) quizás también para:

      • de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService#fillAllVariantPrices
        • Con LTW habilitado la introducción del aspecto de caché también aplicaría a llamadas entre métodos del mismo bean.
        • Siendo así no sería necesaria la introducción de este tercer método (porque llamar a getFromPriceForProduct y getWebPriceForProduct que ya estarían cacheados.

    Se puede conseguir extendiendo esa clase, añadiendo las pertinentes anotaciones y redefiniendo el alias. O más bien mediante configuración a nivel XML.

    DefaultMrtPromotedProductFacade

    Se ha de cachear el método pe.com.marathon.facades.product.impl.DefaultMrtPromotedProductFacade.getPromotionByVariants

    Medio Plazo

    image

    Edited by Julio Argüello
  • Julio Argüello @jarguello.seidor.es ·

    Database

    Tiempos de respuesta lentos:

    image

    SAP Commerce Version '6.5'

    image

    Client Configuration

    image

    com.sap.db.jdbc.Driver.getVersionInfo()
    package package com.sap.db.jdbc, Java Platform API Specification, version 1.6, SAP HANA JDBC Driver, SAP SE, 2.0.9-b5c849bd55f5a1820d3eadb2fcd7d1a313d7b7c4

    JDBC Driver

    Marathon tiene el SP2 (How to check service pack of HANA server?)

    Recomendación 1

    De acuerdo con 1906576 - SAP HANA client and server cross-version compatibility la versión del driver es correcta pero debería de actualizarse.

    image

    El siguiente fragmento extraído de otro proyecto también lo corrobora: image

    • Se ha de subir la versión del driver JDBC de HDB desde 2.0.9 a al menos 2.3.33
    • En su día (11/2018) tengo muy malas experiencias con la versión 2.3.53 (Ticket abierto en FS a propósito de problemas también HDB)
    • Ya está disponible la versión 2.8.14

    Optemos por una estrategia híbrida (previa prueba en un entorno previo) manteniendo nodos diferentes con diferentes versiones del driver JDBC y comparando tiempos de ejecución de queries por nodo:

    • 2.0.9 (actual)
    • 2.3.33 (identificada como segura en otros proyectos)
    • 2.8.14 (última versión)

    Todo ello sin menosprecio de que se precisa conocer de primera mano el comportamiento de la base de datos por parte de DBA especializado (1969700 - SQL Statement Collection for SAP HANA ??)

    Edited by Julio Argüello
  • Julio Argüello @jarguello.seidor.es ·

    Notas aisladas de aspectos que voy viendo

    • SolrBoostRule

    image

    Limpieza de caches: image

    Exagerado el tamaño de la RAM

    Edited by Julio Argüello
  • Julio Argüello @jarguello.seidor.es ·

    ProductCarouselComponent comportamiento de caché

    modelService = spring.getBean("modelService")
    
    cache = net.sf.ehcache.CacheManager.getInstance().getCache('cmsCacheRegion')
    
    typeCodes = new ArrayList()
    
    for (Object key: cache.getKeys()) {
      pk = de.hybris.platform.core.PK.parse key.key.substring(0,13)
    
      typeCodes.add modelService.get(pk).getClass()
    }
    
    typeCodes.countBy { it }
    {
      class de.hybris.platform.acceleratorcms.model.components.ProductReferencesComponentModel=15503
    , class de.hybris.platform.acceleratorcms.model.components.SimpleBannerComponentModel=45
    , class pe.com.marathon.core.model.CMSParagraphToggleComponentModel=107
    , class pe.com.marathon.core.model.CMSParagraphImageComponentModel=27
    , class pe.com.marathon.core.model.FilterBannerComponentModel=30
    , class pe.com.marathon.core.model.CMSParagraphMediaComponentModel=30
    , class de.hybris.platform.cms2lib.model.components.ProductCarouselComponentModel=17
    , class pe.com.marathon.core.model.EnrichedResponsiveBannerComponentModel=1
    , class de.hybris.platform.acceleratorcms.model.components.CategoryNavigationComponentModel=4
    , class pe.com.marathon.core.model.YoutubeVideoComponentModel=5
    , class de.hybris.platform.acceleratorcms.model.components.FooterNavigationComponentModel=4
    , class pe.com.marathon.core.model.OptionMenuComponentModel=12
    , class pe.com.marathon.core.model.DeliveryTimeTableComponentModel=1
    }

    Aparentemente ProductCarouselComponentModel está cacheado! ¿Por qué aparece en todas las trazas?

    image

    image

    modelService = spring.getBean("modelService")
    
    cache = net.sf.ehcache.CacheManager.getInstance().getCache('cmsCacheRegion')

    El TTL es 300"

    [
    name = cmsCacheRegion 
    status = STATUS_ALIVE 
    eternal = false 
    overflowToDisk = false 
    maxEntriesLocalHeap = 20000 
    maxEntriesLocalDisk = 0 m
    emoryStoreEvictionPolicy = LFU 
    timeToLiveSeconds = 300 
    timeToIdleSeconds = 0 
    persistence = NONE 
    diskExpiryThreadIntervalSeconds = 120 
    cacheEventListeners: de.hybris.platform.regioncache.region.impl.EHCacheRegion$1 ; orderedCacheEventListeners:  
    maxBytesLocalHeap = 0 
    overflowToOffHeap = false 
    maxBytesLocalOffHeap = 0 
    maxBytesLocalDisk = 0 
    pinned = false 
    ]

    ¿Cuáles son las entradas en caché de carouseles?

    import static groovy.json.JsonOutput.*
    
    modelService = spring.getBean("modelService")
    
    cache = net.sf.ehcache.CacheManager.getInstance().getCache('cmsCacheRegion')
    
    typeCodes = new ArrayList()
    carousels = new ArrayList()
    
    for (Object key: cache.getKeys()) {
      pk = de.hybris.platform.core.PK.parse key.key.substring(0,13)
    
      item = modelService.get(pk)
      clazz = item.class
      typeCodes.add clazz
      
      if (de.hybris.platform.cms2lib.model.components.ProductCarouselComponentModel.class == clazz) {    
        carousels.add key.key
      }  
    }
    
    carousels.sort()
    println prettyPrint(toJson(carousels))
    
    typeCodes.countBy { it }
    [
        "8796121531452Mon May 31 17:38:30 PET 2021PENes_PE",
        "8796121531452Thu Jun 03 11:06:23 PET 2021PENes_PE",
        "8796121531452Wed Jun 02 10:47:57 PET 2021PENes_PE",
        "8796121531452Wed Jun 02 12:32:51 PET 2021PENes_PE",
        "8796121564220Mon May 31 17:38:30 PET 2021PENes_PE",
        "8796121564220Wed Jun 02 10:48:48 PET 2021PENes_PE",
        "8796121564220Wed Jun 02 12:33:44 PET 2021PENes_PE",
        "8797990749244Wed Jun 02 12:39:22 PET 2021USDes_EC",
        "8797990749244Wed May 26 09:17:21 PET 2021USDes_EC",
        "8797990782012Fri May 15 18:31:17 PET 2020USDes_EC",
        "8797997433916Tue Jun 01 15:41:03 PET 2021USDes_EC",
        "8797997433916Wed Jun 02 12:38:44 PET 2021USDes_EC",
        "8797997499452Thu May 27 17:25:24 PET 2021USDes_EC",
        "8797997499452Wed Jun 02 12:39:02 PET 2021USDes_EC",
        "8798486332476Mon May 31 17:38:30 PET 2021PENes_PE",
        "8798486332476Thu Jun 03 11:06:23 PET 2021PENes_PE",
        "8798486332476Wed Jun 02 12:33:21 PET 2021PENes_PE"
    ]
    • Son 8 PK's diferentes

    • Sólo 1 de ellas ha sido modificada en el día de hoy, siendo la hora actual a la hora de extraer esa información: Thu Jun 03 13:03:13 PET 2021 (2 horas más tarde)

    • El tiempo de vida de cada entrada es 300"

    • Y he comprobado que esas PK's son efectivamente las de la home:

      image

    • Es un hecho que pasa por InnerComponentAwareCachingCMSComponentRenderer

    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:542)
    at pe.com.marathon.storefront.cache.renderer.impl.InnerComponentAwareCachingCMSComponentRenderer.lambda$1(InnerComponentAwareCachingCMSComponentRenderer.java:55)
    at pe.com.marathon.storefront.cache.renderer.impl.InnerComponentAwareCachingCMSComponentRenderer$$Lambda$366/1178517070.execute(Unknown Source)
    at de.hybris.platform.commerceservices.threadcontext.impl.DefaultThreadContextService.executeInContext(DefaultThreadContextService.java:51)
    at pe.com.marathon.storefront.cache.renderer.impl.InnerComponentAwareCachingCMSComponentRenderer.doExecuteInContext(InnerComponentAwareCachingCMSComponentRenderer.java:84)
    at pe.com.marathon.storefront.cache.renderer.impl.InnerComponentAwareCachingCMSComponentRenderer.renderView(InnerComponentAwareCachingCMSComponentRenderer.java:51)
    at de.hybris.platform.acceleratorcms.component.renderer.impl.GenericViewCMSComponentRenderer.renderComponent(GenericViewCMSComponentRenderer.java:85)
    at de.hybris.platform.acceleratorcms.component.renderer.impl.DefaultCMSComponentRendererRegistry.renderComponent(DefaultCMSComponentRendererRegistry.java:80)
    at de.hybris.platform.acceleratorcms.component.slot.impl.DefaultCMSPageSlotComponentService.renderComponent(DefaultCMSPageSlotComponentService.java:334)
    • Pero no entra por el HIT !!!

      image

    Edited by Julio Argüello
  • Julio Argüello @jarguello.seidor.es ·

    Errores Homepage

    El número de errores de handshaking en la home page es exagerado

    image

    Sucede al renderizar algún componente de la cabecera, aunque es difícil precisar cual porque no hay estadísticas:

    caused by javax.net.ssl.SSLException: java.net.SocketException: Broken pipe (Write failed)
                                                                       sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
                                                                   sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1964)
                                                                   sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1921)
                                                         sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1885)
                                                         sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1830)
                                                               sun.security.ssl.AppOutputStream.write(AppOutputStream.java:128)
                                    org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:216)
                                                           org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:442)
                                             org.apache.coyote.http11.InternalOutputBuffer.flush(InternalOutputBuffer.java:120)
                                      org.apache.coyote.http11.AbstractHttp11Processor.action(AbstractHttp11Processor.java:852)
                                                                           org.apache.coyote.Response.action(Response.java:171)
                                                      org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:366)
                                                        org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:334)
                                                        org.apache.catalina.connector.CoyoteWriter.flush(CoyoteWriter.java:98)
    …ngframework.security.web.util.OnCommittedResponseWrapper$SaveContextPrintWriter.flush(OnCommittedResponseWrapper.java:269)
    …ngframework.security.web.util.OnCommittedResponseWrapper$SaveContextPrintWriter.flush(OnCommittedResponseWrapper.java:269)
                                                          org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:179)
                                                org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:893)
                                                    org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:656)
                                                org.apache.jasper.runtime.JspContextWrapper.include(JspContextWrapper.java:314)
                                                org.apache.jasper.runtime.JspContextWrapper.include(JspContextWrapper.java:314)
    …cceleratorcms.component.renderer.impl.GenericViewCMSComponentRenderer.renderView(GenericViewCMSComponentRenderer.java:101)
    …atform.acceleratorcms.component.renderer.impl.CachingCMSComponentRenderer.renderView(CachingCMSComponentRenderer.java:71)
    …erer.impl.InnerComponentAwareCachingCMSComponentRenderer.lambda$0(InnerComponentAwareCachingCMSComponentRenderer.java:40)
    …orm.commerceservices.threadcontext.impl.DefaultThreadContextService.executeInContext(DefaultThreadContextService.java:51)
    …InnerComponentAwareCachingCMSComponentRenderer.doExecuteInContext(InnerComponentAwareCachingCMSComponentRenderer.java:84)
    …er.impl.InnerComponentAwareCachingCMSComponentRenderer.renderView(InnerComponentAwareCachingCMSComponentRenderer.java:39)
    …ratorcms.component.renderer.impl.GenericViewCMSComponentRenderer.renderComponent(GenericViewCMSComponentRenderer.java:85)
    ….component.renderer.impl.DefaultCMSComponentRendererRegistry.renderComponent(DefaultCMSComponentRendererRegistry.java:80)
    …torcms.component.slot.impl.DefaultCMSPageSlotComponentService.renderComponent(DefaultCMSPageSlotComponentService.java:334)
                                   de.hybris.platform.acceleratorcms.tags2.CMSComponentTag.renderItem(CMSComponentTag.java:298)
                                   de.hybris.platform.acceleratorcms.tags2.CMSComponentTag.doStartTag(CMSComponentTag.java:254)
             org.apache.jsp.tag.web.responsive.common.header.header_tag._jspx_meth_cms_005fcomponent_005f3(header_tag.java:1011)
              org.apache.jsp.tag.web.responsive.common.header.header_tag._jspx_meth_cms_005fpageSlot_005f3(header_tag.java:977)
             org.apache.jsp.tag.web.responsive.common.header.header_tag._jspx_meth_sec_005fauthorize_005f1(header_tag.java:867)
                      org.apache.jsp.tag.web.responsive.common.header.header_tag._jspx_meth_c_005fif_005f0(header_tag.java:365)
                                          org.apache.jsp.tag.web.responsive.common.header.header_tag.doTag(header_tag.java:165)
                      org.apache.jsp.tag.web.responsive.template.page_tag._jspx_meth_header_005fheader_005f0(page_tag.java:473)
                                                org.apache.jsp.tag.web.responsive.template.page_tag.access$7(page_tag.java:462)
                                          org.apache.jsp.tag.web.responsive.template.page_tag$Helper.invoke2(page_tag.java:605)
                                           org.apache.jsp.tag.web.responsive.template.page_tag$Helper.invoke(page_tag.java:654)
                                               org.apache.jsp.tag.web.responsive.template.master_tag.doTag(master_tag.java:314) 

    También hay ocurrencias con lo que parece el menú mobile:

    …e.jsp.tag.web.responsive.nav.mobileCategoryComponent_tag._jspx_meth_c_005fwhen_005f1(mobileCategoryComponent_tag.java:804)
    …jsp.tag.web.responsive.nav.mobileCategoryComponent_tag._jspx_meth_c_005fchoose_005f1(mobileCategoryComponent_tag.java:770)
    …sp.tag.web.responsive.nav.mobileCategoryComponent_tag._jspx_meth_c_005fforEach_005f3(mobileCategoryComponent_tag.java:683)
    …che.jsp.tag.web.responsive.nav.mobileCategoryComponent_tag._jspx_meth_c_005fif_005f0(mobileCategoryComponent_tag.java:557)
    …sp.tag.web.responsive.nav.mobileCategoryComponent_tag._jspx_meth_c_005fforEach_005f2(mobileCategoryComponent_tag.java:496)
                  org.apache.jsp.tag.web.responsive.nav.mobileCategoryComponent_tag.doTag(mobileCategoryComponent_tag.java:152)
    …ag.web.responsive.nav.bottomNavigation_tag._jspx_meth_nav_005fmobileCategoryComponent_005f0(bottomNavigation_tag.java:161)
    org.apache.jsp.tag.web.responsive.nav.bottomNavigation_tag._jspx_meth_cms_005fpageSlot_005f0(bottomNavigation_tag.java:125)
                                org.apache.jsp.tag.web.responsive.nav.bottomNavigation_tag.doTag(bottomNavigation_tag.java:85)
  • Julio Argüello @jarguello.seidor.es ·

    Evidencias Queries Lentas

    Price Rows Select (Last Week)

    Se observa como el día 4 de Junio a las 12:15 numerosas queries que atacan pricerows por PK tardaron minutos!

    image

    4 de Junio 12:10 - 4 de Junio 12:20

    1 picos

    image

    3 de Junio 20:10 - 4 de Junio 23:59

    2 picos en diario

    image

    3 de Junio 20:10 - 7 de Junio 23:59

    image

    Rules Select (Last Week)

    Picos con regularidad diaría

    image

    Informe Queries

    El tiempo medio es muy bueno

    image

    Edited by Julio Argüello
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment