我使用Magento(1.9社区版)SOAP API V2开发了自定义API来获取订单。问题是API响应时间超过25秒。 涉及几个API调用。
这两个电话都需要很长时间才能响应。呼叫期间CPU利用率也最大化。
我在监控Magento缓存(var / cache)时发现了一个有趣的行为,它每次创建一个WSDL文件,并在执行结束后删除它。 WSDL缓存文件的 id 是大写 mage --- 345_WSDL_CONFIG_GLOBAL 。已经缓存了WSDL文件的小写 mage --- 345_wsdl_config_global ,但Magento没有选择它。之后我深入挖掘了Magento的核心文件,并在代码/ Mage / core / Model / Cache.php中找到,函数_id($ id)将id转为大写。我评论说,Magento开始选择缓存的低级WSDL文件。响应时间急剧减少,两次通话开始时间不到3秒。
FYI Magento Core API WSDL缓存已设置为true。
有没有人经历过Magento的这种行为?有没有一种有效的方法来提高Magento SOAP API的速度?
由于
答案 0 :(得分:0)
我有过,仍然有同样的问题。到目前为止,我发现的唯一内容是:
我看到使用SQL命令show processlist;
查看MySQL数据库,它会尝试在每个请求上更新sales_flat_quote
表。如果桌子很大,则需要很多时间。
如果找到此查询
DELETE FROM sales_flat_quote WHERE updated_at < DATE_SUB(Now(),INTERVAL 60 DAY)
仅保留最近60天。
MagentoExchange - How to handle huge sales_flat_quote tables
如果将其设置为5天,则我的API调用所需时间减少了50%。