[转]Magento 2 and 1 Million Products
本文转自:https://www.goivvy.com/blog/magento-2-1-million-products
Can Magento 2 handle 1 million products?
I came across that question many times. It got me interested and I started searching the web. I didn’t find an answer so I decided to set up my own experiment.
In this article I will install the latest Magento 2.2.2 (M2), load it with 1 million products and look at the performance. I will describe the procedure in details and will provide specifics so anybody could replicate and prove my findings.
Preconditions
Here is what I will be running:
Magento Open Source 2.2.2.
Debian 8 server with Linode 12G plan: 12G RAM, 6 CPU cores, 196Gb SSD.
I will be using Magento 2 performance toolkit to generate data for testing. It comes with M2 and it helps with testing the impact of various 3rd-party extensions and customizations.
Load 1M products
M2 performance toolkit has different profiles:
Small profile: 800 simple products, 30 categories, 200 customers, 80 orders.
Medium profile: 24k simple products. 300 categories, 2000 customers, 50000 orders.
Large profile: 300k simple products, 3000 categories, 5000 customers, 100k orders.
Extra large profile: 600k simple products, 6000 categories, 10k customers, 150k orders.
Profiles are defined as XML files and are stored in setup/performance-toolkit/profiles/ce/ folder inside Magento root. Here is an example of medium profile:
Medium ProfiWe would edit extra large profile XML to set the maximum number of simple products to 1 million:
-- <simple_products>600000</simple_products>
++ <simple_products>1000000</simple_products>
Then we would run an import process:
php bin/magento setup:perf:generate-fixtures \ setup/performance-toolkit/profiles/ce/extra_large.xml |
It would take a while to complete. I had to run it two times because the first time it crashed MySQL server:
MySQL crThe second time it run out of memory:
Out of memoryI then manually reindexed it:
php bin/magento indexer:reindex
Then again it failed on Catalog Rule Product reindex:
Reindex failedIt seemed the server just could not handle the testing data that big.
I decided to cut down the number of catalog price rules from 20 to 2, categories from 6000 to 60, customers from 10000 to 100 and orders from 16000 to 1500. I made certain edits to extra_large profile and restarted setup:perf:generate-fixtures.
This time it went OK and now I have 1,400,000 products in Magento 2:
1 million SKUsSpeed Measurements
Now it is time to feel 1 million products. I have to say I put store in production mode and enabled all cache options.
We will be measuring server response time or time to first byte. Full page load time depends on network capacity and can be different from computer to computer.
Admin Panel
Backend seems fast. TTFB of Dashboard page is 1.37 sec:
Dashboard-TTFCatalog > Products takes 2.12 sec:
Catalog-TTFBCatalog > Categories takes a bit more, 3.43 sec:
Catalog-Category-TTFBFrontend Performance
Storefront is not so fast. Of course Full Page Cache helps but for the sake of an experiment I will turn it off:
FPC is offWe are using the default Magento 2 Luma theme.
Homepage responds in 846 ms:
Homepage-TTFBCategory page responds in 10,03 sec:
Category-TTFBAdding a configurable product to a cart takes 1.34 sec which is alright:
Add to cart TTFBTakeaway
Magento 2 can easily handle more than 1 million products. Frontend speed is bearable and backend seems fast enough.
Reindex process does take time, in my case it was around an hour for all indexers to finish.
PS: Check out the article where I loaded WooCommerce with 1 million products and compared its performance to Magento 2.
[转]Magento 2 and 1 Million Products的更多相关文章
- Searching for Approximate Nearest Neighbours
Searching for Approximate Nearest Neighbours Nearest neighbour search is a common task: given a quer ...
- 近年Recsys论文
2015年~2017年SIGIR,SIGKDD,ICML三大会议的Recsys论文: [转载请注明出处:https://www.cnblogs.com/shenxiaolin/p/8321722.ht ...
- magento添加多个产品到购物车(Add multiple products to cart )
Step 1app\design\frontend\base\default\template\catalog\product\list.phtml<?php $_productColl ...
- MAGENTO - APACHE SOLR INTEGRATION - PART II (SETUP)
MAGENTO - APACHE SOLR INTEGRATION - PART II (SETUP) Tue, 03/01/2011 - 18:30 Tweet Development E-Comm ...
- Magento开发常用方法
这里是我做Magento开发常用到的方法,现在总结出来,后续会把更多有用的方法总结出来. 1.直接操作数据库 查找数据:$read = Mage::getSingleton("core/re ...
- magento app开发遇到的问题及解决
今天一直在解决Magento的APP接口调用数据异常的问题,调用/api/rest/category/:id 这个接口的时候,返回的所有目录的数据是一样的,原始代码是这样的. 1)请求地址 /api/ ...
- Magento SSH 下载安装
http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/installing_magento_via_shell_ ...
- 如何迁移测试的MAGENTO到正式运行的MAGENTO
或者这个题目叫做如何改变MAGENTO的运行目录 第一,我们需要在PHPMYADMIN备份整个MAGENTO的数据.备份数据并且存为.SQL. 在这儿假设你的测试网站在http://dev.site. ...
- magento问题集
magento产品页面价格出现2遍 In app\design\frontend\default\default\template\catalog\product\view\type\Simple.p ...
随机推荐
- Python自动化开发 - 流程控制
一.拾遗主题 1.变量 理解变量在计算机内存中的表示 >>> a = "ABC" Python解释器干了两件事情: 在内存中创建了一个'ABC'的字符串: 在内存 ...
- C# 不能用于文件名的字符
在 Windows 有一些字符是不能作为文件名,尝试重命名一个文件,输入/ 就可以看到windows 提示的不能作为文件名的字符 那么具体是包括哪些符号不能作为文件名? Tilde (~) Numbe ...
- Microsoft.Office.Interop.Excel.ApplicationClass can not embedded 的问题
用c#进行开发时,要做一个excel导入功能,期间使用到Microsoft.Office.Interop.Excel程序集,在用vs2008开发的时候没有报错,将这个程序集引用到vs2010的时候,便 ...
- Unity 屏幕外死亡的敌人的分数显示在屏幕内
在敌人死亡后,会出现分数,如果敌人死亡的位置在屏幕内,那么使得获得的分数显示在屏幕内,超出屏幕范围的,显示在屏幕外 当然,这里例子是使得场景中的物体显示在屏幕内,当然也可以使用纯粹的UGUI物体的显示 ...
- 如何查看 Ubuntu下已安装包版本号
原文链接:https://www.cnblogs.com/the-tops/p/8350662.html 一个软件工具叫做apt-show-versions,通过apt-get安装: $sudo ap ...
- Linux常用命令 - ls
目录 Linux常用命令-ls 简介 ls -F ls -a ls -R ls -l 后记 Linux常用命令-ls 简介 ls主要用于显示文件和目录列表.作为最常见的Linux命令,大家应该都不会陌 ...
- LOJ#3092. 「BJOI2019」排兵布阵(递推)
题面 传送门 题解 设\(dp_{i,j}\)表示前\(i\)座塔派了总共\(j\)个人的最大收益,转移显然 //minamoto #include<bits/stdc++.h> #def ...
- Python MySQL - 进行数据查询
#coding=utf-8 import mysql.connector import importlib import sys # reload(sys) # sys.setdefaultencod ...
- Postgres 的 Array 类型
mysql 不支持 Array 类型 一.Postgres 原生SQL 适用场景:可以用于实现贴标签功能 1.定义 CREATE TABLE "Students" ( name V ...
- 10-04 Java 权限修饰符,类及其组成常见的修饰符
四种权限修饰符的测试 /* 权限修饰符: 本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类) private Y 默认 Y Y protected Y Y Y public Y Y ...