提高SOAP调用的性能


13

Magento 2.1出现性能问题

在我的商店中,我有90.000种产品。我将这些产品添加到肥皂中。当我这样做时,每篇文章(产品?)大约​​花费了7秒钟(Request> Response)。总而言之,初始化所有产品花了几天时间。

现在所有产品都在商店里。整整几周,我不得不更新文章(产品)上的某些内容。当我再次用肥皂擦洗时,需要花费相同的时间。更新后,商店将无法使用。请求和响应的示例在这里:https : //pastebin.com/aqnMJk98 https://pastebin.com/UAh0h8Zz

我的服务器具有12核心CPU,24 GB RAM和SSD。它运行带有Apache2 PHP7-fpm和MYSQL的Ubuntu 16.04。

当我观看更新过程时,我发现MySQL的5个核心正在以100%的速度工作,而其余的则处于闲置状态。仅使用少量的内存就iotop表明我的SSD很无聊。

我观察了数据库的性能,发现Magento在添加过程中向数据库触发了数千条命令。这个可以吗?

当我使用Magento CSV导入更新它时,它的速度要快得多。

我该怎么做才能加快Magento2的速度?在这种情况下,这家商店不可能很好地运作。


您正在使用哪些扩展?该问题可能与您的扩展之一有关。
Bunyamin Inan

@tadeus在过去两年中您解决了速度问题吗?如果不是,那么免责声明:我是个人资料(网络资料)中提到的网站的内容作者,我们在该资料中拥有免费的实用程序脚本以提高性能和其他Analysis Services。
Wilson Hauck

Answers:


1

批量进口

关键是使用批处理导入,就像您自己提到的那样:

当我使用Magento CSV导入更新它时,它的速度要快得多。

考虑重新考虑您的SOAP API并将其更改为批量模式,例如,您可以创建一些中间件来接受您的产品数据并生成一个csv文件,然后将其输入到Magento中。

来自第三方的一些扩展对此提供了帮助。

一般表现建议

您可以尝试加快Magento本身的速度,但是每次改进都会使您获得〜1-10%的提升,当您进行多次改进时,收益会成倍增加:

  1. 确保您没有无效的代码
    1. 检查您的代码是否不会产生通知/错误/警告
    2. 检查安装的扩展中是否没有昂贵的事件侦听器(来自第三方或您自己)。
  2. 完成删除通知和警告后-考虑禁用日志记录。
  3. 检查您未使用哪些Magento以及第3方扩展,并可以禁用,请参阅在Magento 2中可以禁用哪个模块?以供参考。
  4. 如果您的数据库服务器与Magento应用程序位于同一台计算机上-请确保您使用的是Linux套接字而不是TCP / IP连接。
  5. 如果您的数据库服务器与Magento应用程序不在同一台机器上-请确保PHP每次查询数据库时都不需要进行DNS解析。
  6. 检查数据库性能调整建议,已经在答案之一中提到了percona文章,还检查https://github.com/major/MySQLTuner-perl
  7. 检查magento索引编制模式,按计划切换到索引,并每晚或在导入完成后而不是在产品保存时重新索引。https://devdocs.magento.com/guides/v2.2/extension-dev-guide/indexing.html#m2devgde-indexing-modes

如果以上所有步骤都完成了,您需要提高性能:

  • 使用xDebug或blackfire来分析您的应用程序,查看瓶颈在哪里,尝试消除它们。
  • 问一遍,但要更具体一些,解释一下您目前到底在努力改进什么。
  • 考虑考虑向Magento合作伙伴或经过认证的Magento开发人员寻求帮助。

0

这里的问题是,SOAP调用非常昂贵。如果您启动SOAP请求以添加/编辑/删除产品,则Magento必须联接许多表以获取所有必要的信息。此行为与PHP本身结合使用会使要处理的产品或数据数量变慢。

Magento本身建议使用5节点服务器群集(1 x DB,4 x Webserver)来处理流量。

我建议水平扩展,例如使用AWS。这可能会对您的业务产生更大的影响,但是恕我直言,您将无法调整Magento以获得更好的业绩。

在AWS内,您应该使用自动缩放组的功能,该功能负责启动的服务器数量。每次添加数据时,都会启动新服务器来应对压力。AWS RDS(数据库服务)可以非常轻松,快速地完成相同操作。

如果根本无法使用AWS,则可以尝试调整Magento和PHP。我建议检查以下设置:


0

该链接说明了如何调整MySQL内存使用情况。由于您有太多的RAM,您可能会受益于为MySQL分配更多的内存。这可能是构建专用数据库服务器的更简单且成本更低的($)解决方案。

https://www.percona.com/blog/2016/05/03/best-practices-for-configuring-optimal-mysql-memory-usage/

此外,您可能会发现MySQL Workbench实用程序可帮助您进行此调整并监视MySQL的总体运行情况。该实用程序由Oracle / MySQL制作;它不是一些随机的共享软件应用程序。

https://dev.mysql.com/downloads/workbench/

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.