Sidekiq - 排队作业来自旧代码 运行
Sidekiq - Enqueued Job is running from old code
我在未来安排了大约 30 个 sidekiq 作业(让我们在接下来的 30 天里每天安排第 1 天)。
我使用 capistrano 进行部署。所以我随时有 5 个发布目录。比方说:
/var/www/release1/ (recent)
/var/www/release2/
/var/www/release3/
/var/www/release4/
/var/www/release5/
假设几天后,我发布了一个新版本。现在,之前安排的作业仍然是旧代码中的 运行。这是预期的吗?我们如何解决这个问题以确保它在启动时 运行 而不是计划时使用最新的发布目录?
这可能是因为 sidekiq 进程在成功部署后没有重新启动。
确保您的部署过程重新启动 sidekiq 并确保重新启动确实有效,否则 sidekiq 进程仍在保留旧代码。
我只想为可能因其他原因陷入这种情况的人提供替代答案。
我碰巧有个sidekiq僵尸进程 运行ning。因此,即使我手动停止 sidekiq 并重新启动它,我仍然有另一个 sidekiq 进程挂起 运行 旧代码。因此,最好使用 运行 unix htop
命令或 ps aux | grep sidek
并尝试查找僵尸进程。
我在未来安排了大约 30 个 sidekiq 作业(让我们在接下来的 30 天里每天安排第 1 天)。
我使用 capistrano 进行部署。所以我随时有 5 个发布目录。比方说:
/var/www/release1/ (recent)
/var/www/release2/
/var/www/release3/
/var/www/release4/
/var/www/release5/
假设几天后,我发布了一个新版本。现在,之前安排的作业仍然是旧代码中的 运行。这是预期的吗?我们如何解决这个问题以确保它在启动时 运行 而不是计划时使用最新的发布目录?
这可能是因为 sidekiq 进程在成功部署后没有重新启动。
确保您的部署过程重新启动 sidekiq 并确保重新启动确实有效,否则 sidekiq 进程仍在保留旧代码。
我只想为可能因其他原因陷入这种情况的人提供替代答案。
我碰巧有个sidekiq僵尸进程 运行ning。因此,即使我手动停止 sidekiq 并重新启动它,我仍然有另一个 sidekiq 进程挂起 运行 旧代码。因此,最好使用 运行 unix htop
命令或 ps aux | grep sidek
并尝试查找僵尸进程。