Improve Performance

Enabling VirtioFS in Docker Desktop on Mac

You must have the following version of macOS in order for this feature to work:

  • macOS 12.2 and above (for Apple Silicon)

  • macOS 12.3 and above (for Intel)

For the best experience on macOS, it is recommended to enable VirtioFS in the Docker Desktop settings > General > Choose file sharing implementation for your containers.

See the blog post from the Docker team introducing VirtioFS.

maritos/magento2-performance-fixes

Description

To improve first request GraphQL performance we can use Composer package maritos/magento2-performance-fixes. (Source code available here)

In general, this package changes the default cache building process, when the cache is empty, it locks all incoming requests and waits until the first request finishes building cache and then all following requests instead of rebuilding cache just use it right away.

So yeah, up to 30% speed improvements for GraphQL requests on the first load from a thin air.

Installation

Install Composer package

Install Composer package in your project.

npm run cli # open CLI

c require maritos/magento2-performance-fixes # install package

Extend composer.json

Add extra field in composer.json

composer.json
"extra": {
    "magento-force": "override",
    "enable-patching": true,
    "composer-exit-on-patch-failure": true,
    "patches": {
        "magento/framework": {
            "performance fix #1 - vendor/magento/framework/Config/Data.php": "vendor/maritos/magento2-performance-fixes/vendorPatch/magento/framework/Config/Data.patch",
            "performance fix #2 - vendor/magento/framework/App/ObjectManager/ConfigLoader.patch": "vendor/maritos/magento2-performance-fixes/vendorPatch/magento/framework/App/ObjectManager/ConfigLoader.patch",
            "performance fix #3 - vendor/magento/framework/Interception/Config/Config.patch": "vendor/maritos/magento2-performance-fixes/vendorPatch/magento/framework/Interception/Config/Config.patch"
        }
    }
}

Run composer install

After composer install make sure patches have been applied. Composer install output should be similar to:

  - Applying patches for magento/framework
    vendor/maritos/magento2-performance-fixes/vendorPatch/magento/framework/Config/Data.patch (performance fix #1 - vendor/magento/framework/Config/Data.php)
    vendor/maritos/magento2-performance-fixes/vendorPatch/magento/framework/App/ObjectManager/ConfigLoader.patch (performance fix #2 - vendor/magento/framework/App/ObjectManager/ConfigLoader.patch)
    vendorPatch/magento/framework/Interception/Config/Config.patch (performance fix #3 - vendor/magento/framework/Interception/Config/Config.patch)

That's it! Happy coding!

Last updated