-
-
-
-
Home Page Analysis
Breakdown
(Las horas en el eje de abscisas no son correctas. Parece un bug en NewRelic)
-
Product Detail Page Analysis
(Las horas en el eje de abscisas no son correctas. Parece un bug en NewRelic)
-
Product Grid Page Analysis
(Las horas en el eje de abscisas no son correctas. Parece un bug en NewRelic)
Edited by Julio Argüello -
Resumen Transacciones
hybris 1
hybris 2
hybris 3
hybris 4
hybris 5
hybris 6
hybris 7
hybris 8
hybris 9
hybris 10
-
ProductCarouselComponentControllergrep 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- product-carousel-component-controller-B30
- product-carousel-component-controller
- 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)
MrtPromotionPopulatorSiempre 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)ProductPricePopulatorEl 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:
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 -
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-histogramTop 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,fillAllVariantPricesat 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 -
CategoryPageController
Solr
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-histogramTop Calls
No hay nada que llame especialmente la atención (si acaso lo correspondiente a Orika)
productGridPage.jspgrep -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-histogramTop 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 -
Primeras Recomendaciones
Corto Plazo
De acuerdo con lo ya recomendado en Noviembre 2020 se pone de manifiesto que:
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
ProductCarouselComponentSe 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
@Cacheableo 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 _productPricePopulator
yVariantOptionDataPopulatorempleandopsdtocache` -
En su defecto se puede emplear caché de método (de acuerdo con lo apuntado anteriormente) para:
de.hybris.platform.commerceservices.price.impl.DefaultCommercePriceService#getFromPriceForProductde.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
getFromPriceForProductygetWebPriceForProductque 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.getPromotionByVariantsMedio Plazo
Edited by Julio Argüello - Idealmente se habría de cachear este populator empleando
-
Database
Tiempos de respuesta lentos:
SAP Commerce Version '6.5'
Client Configuration
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-b5c849bd55f5a1820d3eadb2fcd7d1a313d7b7c4JDBC Driver
-
Available JDBC Connection Properties SP4
- Incluye
statementCacheSize
- Incluye
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.
El siguiente fragmento extraído de otro proyecto también lo corrobora:

- 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 -
Notas aisladas de aspectos que voy viendo
- SolrBoostRule
Exagerado el tamaño de la RAM
Edited by Julio Argüello -
ProductCarouselComponentcomportamiento 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
ProductCarouselComponentModelestá cacheado! ¿Por qué aparece en todas las trazas?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:
-
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)Edited by Julio Argüello -
-
Errores Homepage
El número de errores de handshaking en la home page es exagerado
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) -
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!
4 de Junio 12:10 - 4 de Junio 12:20
1 picos
3 de Junio 20:10 - 4 de Junio 23:59
2 picos en diario
3 de Junio 20:10 - 7 de Junio 23:59
Rules Select (Last Week)
Picos con regularidad diaría
Informe Queries
El tiempo medio es muy bueno
Edited by Julio Argüello
Please register or sign in to comment















































