2.6.0b2 升级非常慢

我有一个大型站点反复无法启动。这是一个双容器安装,因此在引导迁移期间,旧容器继续运行。我最终通过为引导过程设置 SKIP_POST_DEPLOYMENT_MIGRATIONS=1,然后在新容器启动后运行迁移来解决这个问题。在 ENV 部分设置 SKIP_POST_DEPLOYMENT_MIGRATIONS=1 后,迁移非常快,站点随后能够正常运行(尽管可能稍慢一些),而迁移过程耗时超过 20 分钟,我记得是这样。

我认为(但尚未测试),使用同样的技巧也可以最小化单容器安装期间的停机时间。如果我的推测正确,你可以这样做:

  • 在 app.yml 中添加 SKIP_POST_DEPLOYMENT_MIGRATIONS=1
  • 运行 ./launcher rebuild app
  • 运行 ./launcher enter app
  • 运行 SKIP_POST_DEPLOYMENT_MIGRATIONS=0 rake db:migrate
  • 撤销 app.yml 中的修改,除非你打算在每次升级后记得手动执行迁移
  • 也许再次重建,以确保在你还记得可能导致站点问题的原因时(比如四个月后你再次尝试时,你可能完全想不起来,别人也很难猜测问题出在哪里)不会出现任何问题

如果有一种方法能让 ./launcher 在不修改 app.yml 的情况下传递 SKIP_POST_DEPLOYMENT_MIGRATIONS=1,那对于不擅长编辑配置文件的用户来说会方便很多。

如果我确实完成了这项工作,我会创建一个新主题来报告我的发现。不过,由于烟雾弥漫,我被困在一个没有大显示器的房间里。(疫情还不够吗?我们还得忍受烟雾?而且我离那场大火其实并不近。)