- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个 Web 应用程序,该应用程序为用户提供上传大图像并对其进行处理的能力作为核心功能。处理大约需要 3 分钟才能完成,我认为 Heroku 将是一个理想的平台,能够以高度可扩展的方式按需运行这些处理作业。处理任务本身在计算上相当昂贵,并且需要运行高端 PX dyno。我想最大化并行化,并最小化(有效消除)作业在队列中等待的时间。换句话说,我想为 N 个作业配备 N 个 PX dynos。
值得庆幸的是,我可以使用 Heroku 的 API(或可选的 Hirefire 之类的服务)轻松完成此操作。每当有新的处理请求进来时,我可以简单地增加工作人员计数,新工作人员将从队列中获取作业并立即开始处理。
然而,虽然放大是无痛的,但缩小是麻烦的开始。 Heroku API 受到了令人沮丧的限制。我只能设置正在运行的 worker 的数量,而不是专门杀死空闲的 worker 。这意味着,如果我有 20 个 worker ,每个 worker 处理一张图像,并且一个人完成了它的任务,我不能安全地将 worker 数量扩展到 19,因为 Heroku 会杀死一个任意的 worker dyno,不管它是否真的在工作中!让所有 worker 一直运行直到所有工作完成是不可能的,因为成本将是天文数字。想象一下,在高峰期间创建的 100 名 worker 继续无限期地闲置,因为一整天都有一些新工作不断涌入!
我在网上搜索过,人们建议的最佳“解决方案”是让您的工作进程优雅地处理终止。好吧,如果您的工作人员只是在发送大量电子邮件,那完全没问题,但我的工作人员正在对图像进行一些非常耗时的分析,正如我上面提到的,大约需要 3 分钟才能完成。
在理想的世界里,我可以杀死一个 具体 worker dyno 在完成其任务后。这将使缩小规模与扩大规模一样容易。
事实上,我通过从 worker dynos 切换到一次性 dynos(它在进程终止时终止,即在“根程序”退出后停止为 dyno 付费)接近了那个理想的世界。但是,Heroku 设置了 5 个可以同时运行的一次性 dyno 的硬限制。我可以理解这一点,因为从某种意义上说,我确实在滥用一次性 dynos……但这仍然令人沮丧。
有什么办法可以更好地缩减我的 worker 数量?我不想从根本上重新设计我的处理算法......将它分成几个块,在 30-40 秒内运行,而不是一个 3 分钟的时间(这样意外杀死正在运行的 worker 就不会灾难性的)。这种方法会极大地复杂化我的处理代码并引入几个新的故障点。但是,如果这是我唯一的选择,我将不得不这样做。
任何想法或想法表示赞赏!
最佳答案
这是 Heroku 的支持人员对此的回答:
I'm afraid this isn't possible at the moment. When scaling down your workers, we will stop the one with the highest number, so we don't have to change the public name for those dynos, and you don't get numbering holes.
关于heroku - 缩小特定的 Heroku worker dynos?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25215334/
我正在尝试了解我的应用指标的 Dyno Load 部分。我的特定应用程序有五个 worker 测功机。根据这些信息,如果我看到 Load Max 或 Load Avg 为 2 或 2.5,那么我应该没
我正在尝试了解我的应用指标的 Dyno Load 部分。我的特定应用程序有五个 worker 测功机。根据这些信息,如果我看到 Load Max 或 Load Avg 为 2 或 2.5,那么我应该没
当管理员询问时,我的 Heroku 工作人员生成了一份报告,压缩为约 10MB 的 ZIP 文件。 生成大约需要一分钟,所以它是由delayed_job完成的。 . 生成完成后,将文件存储在何处以便
我很好奇 Heroku 上的 Web 和 Worker dynos 之间有什么区别。他们在定价页面上给出了一句话解释,但这让我很困惑。我怎么知道每个选择多少个?我应该达到一个比率吗?我对这个东西还很陌
在运行 Unicorn worker 的 Heroku Rails 4.2 Web 应用程序中,每个 worker 需要大约 230MB,我们可以为每个“1X”Heroku dyno 运行 2 个,或
我正在尝试设置一些 actor,并且好奇如何将 Actor 与 Play 捆绑在一起。我看到那个 Play !已经与 Actors 捆绑在一起,但它需要完整的应用程序上下文。这意味着要部署参与者,我还
显然两者都有相同的硬件规范。 “更快的构建”和“预启动”功能(仅在标准 dynos 上可用)似乎只对部署有影响。 至于一般性能,假设 Hobby 和 Standard-1X dynos 性能相同是否正
我在 Heroku 上有一个 Python Flask 应用程序,它提供网页服务,但也允许启动某些任务,我认为这些任务最好构造为后台任务。因此,我关注了 Heroku rq tutorial设置后台任
我最近在我的heroku应用程序中添加了“Heroku Scheduler”插件。 我目前有一个免费的heroku帐户,并且具有标准的一个Web dyno...。 现在,我已经设置了计划的注释以与Sc
Heroku 允许您动态添加和删除 dynos 和工作人员,并按每秒钟使用的费用向您收费。是否可以设置我的应用程序,以便它可以通过某种heroku api根据它所承受的负载从自身添加/删除dynos和
我知道 Heroku 每天自动重启一次 dynos。它们是否每天大约在同一时间重新启动?或者从他们第一次开始就只有 24 小时? 最佳答案 大约,但不一定精确,启动后 24 小时。 此外,如果需要重新
我们正在使用 heroku 的日志排水管将我们的日志聚合到纸迹中。一切都很好,除了我不确定如何从一次性 dynos 设置日志记录,我们用它来运行脚本。 我认为排放配置将适用于一次性 dynos,但我没
我的 Heroku 应用程序有一个 dyno,它访问外部资源,例如数据库\缓存\web-services\等? dyno IP 地址不是静态的,可能会更改,但不会经常更改。当您对这些资源进行维护时,了
我想重新启动 nodejs 应用程序以更改其 ip。我将如何在应用程序本身内执行此操作?我试过强制崩溃,但是如果应用程序在十分钟内崩溃两次,那么 heroku 将在第一次崩溃十分钟后重新启动测功机。
我正在使用 Socket.io 开发一个 node.js 应用程序,并将其部署在 Heroku Dyno 上。 Socket.io 正在使用 RedisStore 及其 PUB/SUB。 Socket
我正在尝试在 this guide 之后获取 Heroku 上的 dyno 元数据在 Google Cloud Shell 上,但它不显示 dyno 元数据。 当我输入以下命令时: heroku la
我在 Heroku 网站上读到,dynos 将每 24 小时重新启动一次。 例如,如果您有两个 web-dynos,它们是否有可能同时重新启动? 谢谢你的时间! 最佳答案 Heroku 随机重启 dy
Heroku 描述了他们的 dynos here它列出了每个人拥有的内存量以及计算资源的数量。我在任何地方都没有看到“计算”的定义。 当我在 performance-l dynos 上运行这个命令时,
是否可以在 Heroku 上为 Clojure webapp 设置作业队列?我看到你可以做延迟工作并为 Rails 和 Django 使用 celery ,Clojure 有什么类似的吗? 最佳答案
我对 Heroku Dyno 小时感到困惑。我了解您每月免费获得 550 dyno 小时的免费帐户。但是我们可以为 Hobby 帐户获得多少 dyno 小时? 有人可以清除这种困惑吗? 最佳答案 使用
我是一名优秀的程序员,十分优秀!