You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Magento 2店铺Redis因慢Lua脚本触发BUSY错误,请求排查脚本身份及解决方法

Magento 2店铺Redis因慢Lua脚本触发BUSY错误,请求排查脚本身份及解决方法

遇到这种Redis BUSY错误确实头疼,我来帮你一步步排查问题根源并给出解决思路:

首先先把你遇到的错误信息和慢脚本日志整理出来,方便后续分析:

BUSY Redis is busy running a script. You can only call SCRIPT KILL or SHUTDOWN NOSAVE. Process went away

慢脚本日志:

2160643:M 04 Jun 2024 02:30:11.917 # Lua slow script detected: still in execution after 5098 milliseconds. You can try killing the script using the SCRIPT KILL command. Script SHA1 is: 6990147f5d1999b936dac3b6f7e5d2071908bcf3
2160643:M 05 Jun 2024 02:30:13.788 # Lua slow script detected: still in execution after 5064 milliseconds. You can try killing the script using the SCRIPT KILL command. Script SHA1 is: 6990147f5d1999b936dac3b6f7e5d2071908bcf3
2160643:M 05 Jun 2024 02:32:23.071 # Lua slow script detected: still in execution after 5793 milliseconds. You can try killing the script using the SCRIPT KILL command. Script SHA1 is: 6990147f5d1999b936dac3b6f7e5d2071908bcf3

第一步:先确定这个SHA1对应的Lua脚本内容

要解决问题,首先得知道这个慢脚本到底在做什么。你可以直接通过Redis命令获取脚本的源代码:

redis-cli SCRIPT FETCH 6990147f5d1999b936dac3b6f7e5d2071908bcf3

执行这个命令后,就能看到完整的Lua代码。结合代码逻辑,你就能判断它是Magento官方的缓存操作脚本、库存原子操作脚本,还是第三方扩展的自定义逻辑。

第二步:定位脚本的触发源

从日志时间来看,脚本总是在凌晨2点半左右触发,大概率是Magento的定时Cron任务导致的。你可以从这几个方向排查:

  • 登录Magento后台,查看系统 > 工具 > 计划任务,检查这个时间点有没有执行缓存清理、索引重建、库存同步或者批量数据处理的任务
  • 检查是否安装了第三方扩展(比如库存管理、批量商品操作类的扩展),这类扩展为了保证Redis操作的原子性,经常会自定义Lua脚本

第三步:解决方法

临时应急:先解除Redis BUSY状态

如果当前Redis还处于BUSY状态,优先执行以下命令终止慢脚本:

redis-cli SCRIPT KILL

⚠️ 注意:这个命令只能终止未执行写操作的Lua脚本。如果脚本已经修改了Redis数据,那只能用SHUTDOWN NOSAVE(但会丢失未持久化的数据,不到万不得已不要使用)。

根源优化方案

  1. 脚本逻辑优化:
    • 如果是Magento官方自带的脚本,检查你的Magento版本是否存在已知的性能bug,建议升级到对应分支的最新稳定版,官方会定期修复这类Redis相关的性能问题
    • 如果是第三方扩展的脚本,联系扩展开发者获取优化版本,或者自行修改脚本(比如把大批次操作拆分成多个小批次,减少单次Lua脚本的执行时间)
  2. 调整Redis配置参数:
    Redis默认的Lua脚本超时时间是5000ms,你可以适当调高这个阈值。找到Redis配置文件(比如redis.conf),修改lua-time-limit参数为10000ms(根据实际情况调整),然后重启Redis服务。但这只是临时缓解方案,还是要从脚本本身优化。
  3. 优化触发任务:
    如果是Cron任务触发的慢脚本,把大任务拆分成多个小任务执行。比如把批量缓存清理改成分批次清理,或者调整Cron的执行时间(虽然你这个是凌晨,但如果数据量过大还是会超时)。

备注:内容来源于stack exchange,提问作者kekw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 11:30:28