Questions tagged «performance»

表示与Magento性能相关的问题

3
性能:在所有产品类型的产品列表list.phtml上添加库存库存水平
TL; DR,要求在类别产品列表页面上显示库存的库存水平,同时考虑到性能符合Magento框架的情况,同时减少查询/存储量。 在阅读Vinai Kopp关于预加载以实现可伸缩性的文章之后。 为了降低性能,在类别产品列表页面(list.phtml)上包含库存库存水平且没有额外的查询/负载的最佳方法是什么? 我知道一些方法: afterLoad()似乎可以很好地与media_gallery包含项一起使用,而无需其他查询,但是我没有成功实现与库存相同的方法。 $attributes = $_product->getTypeInstance(true)->getSetAttributes($_product); $media_gallery = $attributes['media_gallery']; $backend = $media_gallery->getBackend(); $backend->afterLoad($_product); 指示SQL以product_id例如键的方式与集合并行收集所需的数据。但是在框架中寻找更多的手段。 目前,我只是stock_item通过以下方式加载对象: $_product->load('stock_item')->getTotalQty(); 哪个可行,但我注意到添加了更多查询以获取集合中所有产品的库存总计。 ... __EAV_LOAD_MODEL__ (Mage_Catalog_Model_Product, id: stock_item, attributes: NULL) __EAV_LOAD_MODEL__ (Mage_Catalog_Model_Product, id: stock_item, attributes: NULL) __EAV_LOAD_MODEL__ (Mage_Catalog_Model_Product, id: stock_item, attributes: NULL) ... 奇怪的是,这有效。魔术发生在Mage_Eav_Model_Entity_Abstract-> load($ object,$ entityId,$ attributes)中。如果$ attributes为空,它将调用loadAllAttribute($ object)。因此$ product-> load('blah')将加载所有缺少的属性,包括'media_gallery'– …

1
产品列表属性过滤器查询
我_getProductCollection() 在类的方法中添加了一个过滤器,Mage_Catalog_Block_Product_List 如下所示。 protected function _getProductCollection() { ... $this->_productCollection = $layer->getProductCollection(); $this->_productCollection->getSelect()->joinInner( array('cpe' => 'catalog_product_entity'), 'e.entity_id = cpe.entity_id' ) ->where("cpe.type_id = 'simple'"); ... } 上面的代码从Magento 1.7版本开始运行良好。但是,每当我编写以下代码时, 找不到列:1054“ where子句”中的未知列“ e.type_id” 错误。 代码(不起作用)。 protected function _getProductCollection() { ... $this->_productCollection = $layer->getProductCollection(); $this->_productCollection ->addAttributeToSelect('type_id') ->addAttributeToFilter('type_id','simple'); ... } 现在的问题。 如果使用第一个工作代码,会对性能产生影响吗? 还有其他方法可以解决这个问题吗? 更新: 每当我应用以下代码并使用rwd主题时,都不会出现任何错误。但是每当我使用default主题时,都会出现以下错误, 码 …

2
可以截断report_viewed_product_index
我正在阅读可以截断的表的列表(/programming/12205714/list-of-tables-to-safely-truncate-in-magento),但没有看到 report_viewed_product_index 该表很大,还原数据库需要很长时间。截断此数据或至少删除最旧的数据是否安全?

4
Magento 2.2通常非常慢,设置后处理器使用率达到100%:升级
我当前Magento 2.2, php7, Apache2在Amazon AWS EC2 c4.large实例上运行,但是当我将t2.micro实例用作开发服务器时,通常也可以。 出于某种原因,在运行自定义模块之一中的安装文件之一或安装第三方模块后,偶尔运行setup:upgrade时,我的服务器将变得非常慢,每次尝试时都保持100%cpu的使用率要加载页面,页面加载需要1分钟以上的时间,并且在不加载页面时将保持25%的CPU使用率。它只影响我称为setup:upgrade的magento网站,同一服务器上安装的其他magento上的页面仍将以正常速度加载。 有时可以通过以下方法解决问题:卸下刚刚升级的模块,重新启动服务器,然后重新安装模块,而无需对代码进行任何更改,有时进行第二次设置:upgrade可以解决问题,有时看来,我可以解决的唯一方法是通过完全重新安装Magento 2和模块。 我曾在Magento 2.1.6, 2.1.8, 2.1.9和上发生过这种情况2.2,主题和模块的各种不同组合在默认情况下似乎都不存在开发人员和生产模式的任何问题。 编辑:重要说明 如果您遇到此问题,并且像我一样肯定您从未禁用过缓存,那么从现在开始(Magento 2.3),一个公认的问题是composer update偶尔运行会禁用所有缓存。因此,即使您认为已启用缓存,也值得仔细检查。

3
Magento性能图像和CDN上的静态图像
我们正在研究Magento速度的进一步提高。我们现在看到的是,使用以下设置,页面运行起来。仅图像稍后出现。主文件的交付时间为几毫秒,但是由于图像的原因,加载时间仍为2秒。 法师缓存 合并css / js 缩小APC +内存缓存 htaccess调整 tmpfs上的会话/缓存 我的问题:在我自己的服务器上设置CDN的步骤是什么? (它确实有帮助) 我了解是这样的(但这根本无法正常工作): 创建cdn子域 更改文档根目录(和/或为什么设置cname?) 更改配置

2
页面加载时间不一致
我非常接近完成一个大型的magento项目,并且将重点转移到提高magento的速度上。作为一个序言,我更像是一个前端开发人员,在内部完成这个大型项目,并在进行过程中弄清楚问题。 我在带有2GB内存的Media Temple专用虚拟服务器上具有开发magento。最近,我有多达600种产品,每种产品有约25种不同的属性(总共约300种独特属性),也许有50种类别。我删除了所有这些内容,以尝试排除15s左右的加载速度。 但是,我的加载时间仍然很长而且不一致。我用Firebug报告了500毫秒的响应时间,以重新加载我的主页,然后立即重新加载,结果报告为9秒以上。这是服务器问题还是Magento本身的问题?我该如何测试类似的东西?

1
Magento 2:记录慢速查询
回到M1,您可以通过修改以下变量来记录慢速查询lib/Varien/Db/Adapter/Pdo/Mysql.php: /** * Write SQL debug data to file * * @var bool */ protected $_debug = false; /** * Minimum query duration time to be logged * * @var unknown_type */ protected $_logQueryTime = 0.05; /** * Log all queries (ignored minimum query duration time) * * @var bool …

3
Magento 1:性能优化以删除实体
我目前正在尝试改进有关性能的几个模块。 你们中有些人可能知道集合方法的用法,walk()这对于避免直接遍历产品非常有用。 最重要的是,感谢@Vinai,我们也可以使用collection delete()方法。 但是我注意到Magento 1本机文件并不总是使用这些方法中的任何一种进行删除。 一个我见过的最糟糕的代码是massDelete()从方法app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php,其中产品在删除之前的循环加载。 foreach ($productIds as $productId) { $product = Mage::getSingleton('catalog/product')->load($productId); Mage::dispatchEvent('catalog_controller_product_delete', array('product' => $product)); $product->delete(); } 因此,我进行了一些性能测试,添加了一些日志记录调用,以检查删除100个产品所花费的时间和内存使用情况。 测试1:walk方法 我用以下代码替换了上面粘贴的原始代码: $collection = Mage::getResourceModel('catalog/product_collection') ->addAttributeToSelect('entity_id') ->addIdFilter($productIds) ->walk('delete'); 在我糟糕的开发服务器上的结果如下(基于10个测试的平均值): 原始代码:19.97秒,已使用15.84MB 自定义代码:17.12秒,已使用15.45MB 因此,对于100种产品的删除,我的自定义代码加快了3秒,而占用的内存少了0.4MB。 测试2:使用收集delete()方法 我用以下代码替换了原始代码: $collection = Mage::getResourceModel('catalog/product_collection') ->addAttributeToSelect('entity_id') ->addIdFilter($productIds) ->delete(); 和记吹这里的结果: 原始代码:19.97秒,已使用15.84MB 自定义代码:1.24秒,已使用6.34MB 因此,对于100种产品的删除,我的自定义代码加快了18秒,而占用的内存减少了9MB。 如评论中所述,该方法似乎不会触发Magento事件(加载后,删除后),也不会触发索引/缓存刷新。 题 所以我的问题是:Magento核心团队为什么没有使用walk('delete')or事件更好的收集delete()方法而不是循环加载产品(我们都知道这是非常非常糟糕的做法)吗? 主要目标是在开发模块时要注意这些关键点:在某些特殊情况下,不能使用walk/收集delete()方法吗? …

2
如何识别“电话回家”的分机?
有没有办法识别在后台将HTTP请求发送到远程服务器的代码? 我注意到,当我在开发机上收到不满意的邮件时,许多商店都需要很长时间才能加载,即使在本地主机上运行也是如此。 我的感觉是,由于我的连接不连贯,一些远程服务器需要很长时间才能响应。我想识别并删除这些请求,因为我担心它们还会降低实时安装的速度,例如,如果外部服务器关闭或速度缓慢...

2
加快magento肥皂v1
对于经验丰富的magento开发人员,我有多个问题: 是否可以提高magento v1 soap api的速度?当请求数据时,Magento花费1.5秒快速编译诸如客户地址等简单信息。 请求多个可能的相关数据节点可能很快花费大约5-7秒的时间。 现在我已经通过AJAX请求完成了这些请求,因此页面界面可以快速加载,但是速度提高会很好。 还是编写自己的应用程序直接从magento db给我相关信息会更好?db并没有那么复杂,如果我执行直接查询,它会在100秒内加载结果... 我对该选项的唯一考虑是: 如果magento更新和更改其数据库方案怎么办? 还是magento的数据库设置相对升级安全/向下兼容? 有没有人对此有任何经验,成功或失败的故事?我需要做出明智的决定,才能知道如何进行。
10 performance  api 

9
Magento页面加载花费太多时间
我有magento网站。没有任何用户(一次最多2-3个)。 我们的服务器是:CPU:2000MHz RAM:2048Mb HDD:50000Mb。 我安装了ZendServerCE(apc + memcached + Zend Optimizer + Zend数据缓存)。我关闭了memcached,因为网站加载情况更糟。我在管理控制台中设置了平面类型结构,重新索引和缓存的数据。 所以我有apc + Zend Optimizer + Zend数据缓存。 第一个问题是我检查了运行时调度如何工作。start_session()调用大约需要500-700ms。似乎效果不好。为什么这么久,我不知道。 我已经阅读了这篇文章:http : //dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_buffer_size并找出了适合我服务器的最佳选择。 每小时: Key_read_requests = 8887 Key_reads = 252 Key_write_request = 187 Key_writes = 146 您会看到252/8887> 0.01,但不是太多。这是我获得的最佳价值。其他结果从> 6开始。 这是my.cnf: key_buffer = 48M myisam_sort_buffer = 2M sort_buffer = 2M read_buffer_size = …

2
OpCache-Magento2的推荐配置
我正在使用Magento 2堆栈,正在重用某些Magento 1 OpCache配置。我已经了解到,现在我们需要启用注释,但是我很确定其他值可以改进,因此这是我当前的配置: [opcache] opcache.enable=1 opcache.enable_cli=0 opcache.memory_consumption=256 opcache.interned_strings_buffer=12 opcache.max_accelerated_files=65406 // thanks Mage2.Pro! ;opcache.max_wasted_percentage=5 ;opcache.use_cwd=1 opcache.validate_timestamps=0 ;opcache.revalidate_freq=2 ;opcache.revalidate_path=0 ;opcache.save_comments=0 ;opcache.load_comments=0 opcache.fast_shutdown=1 opcache.enable_file_override=1 ;opcache.optimization_level=0xffffffff ;opcache.inherited_hack=1 ;opcache.dups_fix=0 ;opcache.blacklist_filename= ;opcache.max_file_size=0 ;opcache.consistency_checks=0 ;opcache.force_restart_timeout=180 opcache.error_log=/var/log/php5/php5-opcache.error.log opcache.log_verbosity_level=3 ;opcache.preferred_memory_model= ;opcache.protect_memory=0 注意: 为了使它对所有人有用,我将在问题中(打开时)编辑配置块,以使其对每个人都有用,并且避免重复建议,如果对此有任何疑问或表示违反站点规则,让我知道。

3
页面加载缓慢
我目前面临的页面加载速度很慢,而结帐是速度最快的: 28个要求 传输了18.5 KB(其余磁盘或内存缓存) 完成:15.24秒(加载程序消失,用户可以执行某些操作) DOMContentLoaded:6.45秒 负载:10.28秒 加载结帐/购物车的结局是: 29个请求 传输了28.5 KB(其余磁盘或内存缓存) 完成:6.35秒 DOMContentLoaded:1.9秒 负载:3.79秒 而空的购物车有: 22个请求 传输8.2 KB(其余磁盘或内存缓存) 完成:2.78秒 DOMContentLoaded:1.22s 负载:2.65s 我正在使用redis进行缓存,并且所有缓存都处于活动状态。Javascript以及CSS和HTML都被缩小,合并和捆绑。该服务器的位置非常好,带有8个CPU,16GB RAM和一个SSD。负载等永远不会高到足以被提及。基本上服务器正在休眠... 大约有80种产品和一家商店。我们不使用Magento的内容部分。Magento只提供产品详细信息页面,结帐和客户区域(以及后端)。Magento的“前面”有一个CMS系统,该页面所提供的页面不到第二秒,包括介质。 我看到结帐文档的TTFB已经是5.66s。启用了Magento分析器后,我发现magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body大部分时间都是由这种情况引起的。尽管还不清楚究竟是什么原因造成的。在这里,探查器不能提供太多帮助(至少对我而言)。 magento->routers_match 5.347600 5.347600 1 42,063,304 10,485,760 magento->routers_match->CONTROLLER_ACTION:checkout_index_index 5.143997 5.143997 1 15,976,176 10,485,760 magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body 5.143980 5.143980 1 15,975,304 10,485,760 magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->EVENT:checkout_allow_guest 0.000609 0.000609 1 82.464 0 magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->EVENT:checkout_allow_guest->OBSERVER:checkout_allow_guest …

3
Magento 2-繁重的加载时间(太多js文件)
我目前正在研究Magento 2,我注意到所有页面的加载时间都非常长。 目前,我正在Xampp上运行,启用了生产模式,合并并缩小了HTML / js / CSS,禁用了Varnish,由于我的网络托管无法将其安装在服务器上,因此我将不使用它,因为它会干扰一些脚本。我使用一个自定义主题,其父主题是Magento 2的空白主题。更改设置后,我重新部署了静态文件并清空了缓存。 我主要担心的是,当我查看网络面板时,每次都会加载大量的js文件。例如,在我的类别页面上,加载了122个js文件,发现这些文件很多,总大小为955 ko。 我在服务器上对其进行了测试,没有进行合并和精简,但是如上所述,我认为问题在于文件的加载量,因为即使加载速度更快,它仍然太长,而在结帐过程中,甚至更糟。 我尝试了捆绑选项,但它会生成一个8MB的js文件,情况更糟。 我是否错过了一些东西,或者说js文件这么多,这在某种程度上正常吗?是否必须使用Varnish才能获得良好的性能,并且有替代方法吗? 我对Magento 2还是很陌生,所以如果您需要更多信息,我们将很乐意提供。

2
当缓存“满”时,Magento非常慢
我们正在具有足够大小的受管服务器上使用Lesti_Fpc运行Magento 1.9.2.1 。最初,我们使用默认的文件缓存,这很好。但是在目录增加之后(尽管我认为〜8000产品还不错)并且爬虫变得更加激进,但只要缓存变得更大,站点就会变慢。清除缓存后,所有内容再次快速运行。 我们尝试通过local.xml中的以下条目切换到APC作为缓存后端: <global> <cache> <backend>apc</backend> <prefix>MYSHOP_</prefix> </cache> </global> 但这使问题更加严重。然后,我读到Cm_Cache_Backend_File是针对此问题而制作的,并通过以下方式进行了集成: <global> <cache> <backend>Cm_Cache_Backend_File</backend> </cache> </global> 感觉好一些,但问题仍然存在。为了使缓存小而整洁,我还集成了Aoe_CacheCleaner,但这也无济于事。不过,清除缓存后,一切都会再次快速运行。 编辑: 基于infabo的回答,我还Cm_Cache_Backend_File为FPC 激活了文件app/etc/fpc.xml和以下内容: <?xml version="1.0"?> <config> <global> <fpc> <lifetime>86400</lifetime> <backend>Cm_Cache_Backend_File</backend> </fpc> </global> </config> 我确信这是有道理的,但它也不能解决问题。 我知道,解决此问题的一般方法似乎是将Redis(或者可能是Memcached)作为缓存后端,但是不幸的是,它在我们的托管服务器上不可用。切换到另一个托管公司(尚未)是一种选择。 我现在进行了很多调查,但我没有其他想法。也许其他人可以帮忙吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.