Heroku 零停机时间

2024-03-19

是否可以做类似的事情Github 零停机部署 https://github.com/blog/517-unicorn在 Heroku 上使用 Cedar 堆栈上的 Unicorn?

我不完全确定 Heroku 上的重启是如何进行的,以及我们对重启进程有什么控制权,但我喜欢零停机部署的可能性,到目前为止,从我读过什么 https://stackoverflow.com/questions/2560845/hot-deploy-on-heroku-with-no-downtime, 这是不可能的

要使其发挥作用,需要做一些事情。

  1. 首先,我们需要向后兼容的迁移。我把这个问题留给我们的团队来解决。
  2. 其次,我们希望在推送之后、重新启动之前立即迁移数据库(假设我们的迁移完全向后兼容,这不应该影响任何事情)
  3. 第三,我们想要指示 Unicorn 启动一个新的主进程并分叉一些工作进程,然后交换 PID 并优雅地关闭旧进程/工作进程

我已经浏览了文档,但找不到任何表明这在 Heroku 上可行的内容。有什么想法吗?


我无法解决迁移问题,但可以解决有关重新启动进程和避免等待时间的部分:

Heroku 有一个测试版功能,称为预启动。部署后,它首先启动新的测功机,并等待一段时间,然后再切换流量并杀死旧的测功机:

https://devcenter.heroku.com/articles/labs-preboot/ https://devcenter.heroku.com/articles/labs-preboot/

我还写了一篇博客文章,其中对使用此功能对我的应用程序的性能改进进行了一些测量:

http://ylan.segal-family.com/blog/2012/08/27/deploy-to-heroku-with-near-zero-downtime/ http://ylan.segal-family.com/blog/2012/08/27/deploy-to-heroku-with-near-zero-downtime/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Heroku 零停机时间 的相关文章

随机推荐

  • 在 Verilog 中判断总线是否包含单个 x 的最佳方法是什么?

    我有一个监控总线的测试台 总线内的一些信号 位 可以是 1 bx 由于多种原因 我需要知道总线内是否有任何信号是 1 bx 如果总线包含任何 x 测试 不用于综合 仅用于模拟目的 的最佳方法是什么 我曾希望我可以使用减少或然后使用 但这似乎
  • NoMethodError 未定义方法“link_to_function”

    我将 ActiveAdmin 添加到我的应用程序中 更新了一些 gem 现在我得到了undefined method link to function 查看用户显示页面时 我有will paginategem 和我添加了一个初始化程序 所以
  • 当我尝试变换此播放器控制器时,它只是重置到原始位置

    这是我现在使用的播放器控制器的简化版本 它仍然会产生如下错误 using UnityEngine using UnityStandardAssets CrossPlatformInput using UnityStandardAssets
  • GIT 后接收挂钩未检出子模块

    我一直在开发 Kohana 3 项目 该项目是我不久前使用下载的 zip 文件安装的 我的远程服务器 project git 上有一个 git 存储库 它检查对我测试应用程序的工作目录 public html 的最新提交 我的接收后挂钩文件
  • 同步块——锁定多个对象

    我正在建模一个游戏 其中多个玩家 线程 同时移动 玩家当前所在位置的信息被存储两次 玩家有一个变量 hostField 它引用棋盘上的一个字段 每个字段都有一个 ArrayList 存储当前位于该字段的玩家 我对拥有冗余信息这一事实不太满意
  • min-height:100% 不起作用,因为我也想要它

    我有一个容器 div 包含 3 个 div 一个侧边栏 一个内容和一个标题 而内部的所有元素均按应有的方式呈现 如果这可能会影响我的问题 则它们被定位为 相对 侧边栏和内容使成为min height 100 根据我的需要 包含它们的 div
  • 如何在 Bash 中添加到流之前?

    假设我在 bash 中有以下命令 one two one运行很长时间产生输出流并且two对该流的每一行执行快速操作 但是two除非它读取的第一个值告诉它每行要读取多少个值 否则根本不起作用 one不输出该值 但我提前知道它是什么 假设它是1
  • 检查上传文件的类型

    如何检查使用上传的文件的文件类型FileUploaderASP NET C 网页中的控件 我尝试检查文件扩展名 但当 JPEG 图像 例如Leonardo jpg 被重命名为具有 PDF 的扩展名 例如Leonardo pdf I trie
  • 为什么在函数内部使用 let 声明的某些变量在另一个函数中可用,而其他变量则导致引用错误?

    我不明白为什么变量在函数内声明时表现得如此奇怪 In the first我声明的函数let变量b and c与价值10 b c 10 In the second我显示的功能 b c 这表明 10 10 Also in first我声明的函数
  • 在 C++ 中“stable_sort()ing”STL

    我认为问题标题足够清楚 is is possible to stable sort a std list in C 或者我必须将其转换为 std vector 吗 我问这个问题是因为我尝试了一个简单的示例 它似乎需要 RandomAcces
  • 我怎样才能在android中重复周一、周二和周五的闹钟

    如何在 Android 中仅在周一 周二和周五重复闹钟 Intent myIntent new Intent getApplicationContext x class PendingIntent pendingIntent Pending
  • 如何在类模板之外定义嵌套成员模板?

    考虑以下类模板 template
  • 如何从字典中随机选择一个项目?

    我是一个 python 初学者 试图制作二十一点游戏 并且一直不断收到有关此代码的多个关键错误 def rank rank rank 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 Jack 10 King 10
  • 使用新的 Spring UriComponentsBuilder 进行 URL 编码

    我正在尝试使用 spring 的 UriComponentsBuilder 来生成一些用于 oauth 交互的 url 查询参数包括回调url 带空格的参数值等实体 尝试使用 UriComponentBuilder 因为 UriUtils
  • 如何创建关联矩阵

    我正在尝试创建 1 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 S 1
  • 如何将RequiredFieldValidator添加到DropDownList控件?

    我有一个DropDownList与一个绑定SqlDataSource显示数据库中的值 我无法使用RequiredFieldValidator 大多数情况下 您将其视为正在验证任何其他类型的控件 但使用所需字段验证器的 InitialValu
  • 在 Swift 中显示当前位置并更新 MKMapView 中的位置

    我正在学习如何使用新的 Swift 语言 只有 Swift 没有 Objective C 为此 我想用地图做一个简单的视图 MKMapView 我想查找并更新用户的位置 就像在 Apple 地图应用程序中一样 我尝试了这个 但什么也没发生
  • 如何从链接到 QTableView 的模型中插入和删除行

    The removeRows 通过删除选定的行来按预期工作 但有一个问题insertRows 由于某种原因 新项目不会出现在所选索引号处 是什么原因导致这个问题呢 from PyQt4 QtCore import from PyQt4 Qt
  • Matplotlib:如何设置当前图形?

    希望这是一个简单的问题 但我目前无法弄清楚 我想使用 matplotlib 显示 2 个数字 然后交互式地使用它们 我用以下方法创建数字 import matplotlib import pylab as pl f1 pl figure f
  • Heroku 零停机时间

    是否可以做类似的事情Github 零停机部署 https github com blog 517 unicorn在 Heroku 上使用 Cedar 堆栈上的 Unicorn 我不完全确定 Heroku 上的重启是如何进行的 以及我们对重启