现象:同一商品原来 3 秒保存完,安装营销扩展后稳定需要 110 秒,Nginx 最终偶尔 504。

第一刀:记录请求开始、数据库提交和响应结束时间。若数据库更新很早完成,后面的耗时多半在保存后的 Observer、Plugin 或同步接口。

grep -RniE 'catalog_product_save_(before|after)|catalog_product_save_commit_after' app/code
bin/magento dev:profiler:enable html

第二刀:在测试环境用相同商品和数据,逐个停用最近增加的模块。不要在生产环境随机关模块,也不要把 max_execution_time 调到十分钟后就宣布修好。

本次根因是 catalog_product_save_after 中同步调用远程 ERP,并且连接超时设为 90 秒。改为提交后写入队列,消费者负责重试;后台保存只记录任务 ID。复测简单、可配置、含大量图片三类商品,同时确认索引状态和 ERP 最终数据一致。