Skip to content

Dashboard out of memory due to heavy health checks #3596

@ilnytskyi

Description

@ilnytskyi

Preconditions

Magento Version : 2.4.7+

ElasticSuite Version : 2.11.12.1

Environment : any

Third party modules :

Steps to reproduce

  1. Set lower memory limit on request or preload other big caches
  2. Try login into admin

Expected result

  1. Admin dashboard loads ok

Actual result

  1. Admin does not load
{
  "class": "Exception",
  "code": 0,
  "trace": [
    "/mage_root/devel1746446350/vendor/smile/elasticsuite/src/module-elasticsuite-core/Helper/Cache.php:113",
    "/mage_root/devel1746446350/vendor/smile/elasticsuite/src/module-elasticsuite-core/Model/ProductMetadata/ComposerInformation.php:86",
    "/mage_root/devel1746446350/vendor/smile/elasticsuite/src/module-elasticsuite-core/Model/Healthcheck/HyvaCompatibilityCheck.php:140",
    "/mage_root/devel1746446350/vendor/smile/elasticsuite/src/module-elasticsuite-core/Model/Healthcheck/HyvaCompatibilityCheck.php:167",
    "/mage_root/devel1746446350/vendor/smile/elasticsuite/src/module-elasticsuite-core/Model/Healthcheck/HyvaCompatibilityCheck.php:154",
    "/mage_root/devel1746446350/vendor/smile/elasticsuite/src/module-elasticsuite-core/Model/Healthcheck/HyvaCompatibilityCheck.php:83",
    "/mage_root/devel1746446350/vendor/smile/elasticsuite/src/module-elasticsuite-core/Model/Healthcheck/HealthcheckList.php:89",
    "/mage_root/devel1746446350/vendor/smile/elasticsuite/src/module-elasticsuite-core/Block/Adminhtml/Healthcheck/MenuDecorator.php:89",
    "/mage_root/devel1746446350/vendor/smile/elasticsuite/src/module-elasticsuite-core/Block/Adminhtml/Healthcheck/MenuDecorator.php:73",
    "/mage_root/devel1746446350/vendor/smile/elasticsuite/src/module-elasticsuite-core/view/adminhtml/templates/healthcheck/menu_decorator.phtml:18",
    "/mage_root/devel1746446350/vendor/magento/framework/View/TemplateEngine/Php.php:67",
    "/mage_root/devel1746446350/generated/code/Magento/Framework/View/TemplateEngine/Php/Interceptor.php:46",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Element/Template.php:263",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Element/Template.php:293",
    "/mage_root/devel1746446350/vendor/magento/module-backend/Block/Template.php:141",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Element/AbstractBlock.php:1128",
    "/mage_root/devel1746446350/vendor/magento/framework/Cache/LockGuardedCacheLoader.php:136",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Element/AbstractBlock.php:1149",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Element/AbstractBlock.php:676",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:578",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:555",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:510",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:606",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:557",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:510",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:606",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:557",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:510",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:606",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:557",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:510",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:606",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:557",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:510",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:606",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:557",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:510",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Layout.php:975",
    "/mage_root/devel1746446350/generated/code/Magento/Framework/View/Layout/Interceptor.php:130",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Result/Page.php:260",
    "/mage_root/devel1746446350/vendor/magento/framework/View/Result/Layout.php:171",
    "/mage_root/devel1746446350/generated/code/Magento/Backend/Model/View/Result/Page/Interceptor.php:107",
    "/mage_root/devel1746446350/vendor/magento/framework/App/Http.php:120",
    "/mage_root/devel1746446350/generated/code/Magento/Framework/App/Http/Interceptor.php:55",
    "/mage_root/devel1746446350/vendor/magento/module-application-performance-monitor/Plugin/ApplicationPerformanceMonitor.php:38",
    "/mage_root/devel1746446350/generated/code/Magento/Framework/App/Http/Interceptor.php:53",
    "/mage_root/devel1746446350/vendor/magento/framework/App/Bootstrap.php:264",
    "/mage_root/devel1746446350/pub/index.php:30"
  ]
}

I see that problem happens near trying to load and userialize caches
Image
We have 30+ stores it seems to load checks for many indexes
Image
Problem of out of memory happens here, just after loading from cahce, during unserialization.

\Smile\ElasticsuiteCore\Helper\Cache::loadCache

And for some reason my debug logger noticed recorded over 10K call of that functions. Mainly for indexes, that confirmed by screen from spx trace.

Image

Is there a way to disable it, or improve or do something to avoid the oom problems?

it also adds a lot of time to dashboard load to run all checks.
Image

We also have debug mode disabled

Image

But the config is quite strangely triggers exactly when it's disabled

Image

As a workaround I only see posibility to remove this block from default.xml for now.

<block class="Smile\ElasticsuiteCore\Block\Adminhtml\Healthcheck\MenuDecorator"
                   name="healthcheck.menu_decorator"
                   template="Smile_ElasticsuiteCore::healthcheck/menu_decorator.phtml" />

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions