- 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/
如果一个域有多个团队和多个 Web 应用程序,那么注册 Service Worker 来管理整个站点的最佳建议是什么?具有范围的顶级服务 worker /或子域中的多个服务 worker ?由于一个域
我开发了一个应用程序来分析播放 YouTube 视频时的网络流量。它使用 chrome.webRequest,我使用 onHeadersReceived 事件计算流量。 我想使用 service wo
假设我提供了不同网站使用的推送通知服务。此服务需要在我的客户站点上安装服务 worker 。我希望架构具有一些属性: 完全静态资源。安装service worker文件和配置JS片段等过程只需要完成一
我要缓存某人网站中的特定请求 ,那么我发现 service worker 是一个不错的选择。但我找不到任何方法 通过 tampermonkey 注入(inject)一个 service worker
当 Service Worker 更新时,它不会以正确的方式控制页面;它进入“等待”状态,等待被激活。 令人惊讶的是,更新后的 Service Worker 甚至在刷新页面后都无法控制选项卡。谷歌解释
有谁知道是否有办法在 service worker 中获取此号码或日期: 将我的服务 worker 缓存命名为 cache-1182 会很方便或 cache-20171127171448 我想在安装事
这link说: Workers may spawn more workers if they wish. So-called sub-workers must be hosted within the
有许多关于使用 ngsw-worker.js 安装 ServiceWorker 的分步指南;然而,甚至没有关于使用 safety-worker.js 卸载 ServiceWorker 的分步指南。 s
我正在尝试为我的网站使用后台定期同步。我正在使用 localhost 并在 1*1000 毫秒时注册 periodicsync 事件,但这根本不会触发。 我看过这个demo ,但即使我将该网站安装为应
我试图让用户安排一个周期性任务。我还在一个容器中运行多个 celery worker 。我对该容器的命令过去是这样的: celery worker -c 4 -B -l INFO -A my.cele
从我所看到的,你甚至可以缓存一个网页。根据此文档:https://www.mnot.net/cache_docs/#BROWSER ,表示可以缓存在浏览器缓存中。我看到即使是 serviceworke
我只是在测试 Service Worker 的功能以了解其工作原理。所以现在我遇到了一个问题。 var CACHE_NAME = 'my-site-cache-v1'; var urlsToCache
下图显示安装了两名工作人员 - 一名处于事件状态,另一名未处于事件状态(刚刚安装)。 注册 service worker 更改 service-worker.js并重新加载页面。 逻辑是 Servic
我正在尝试学习渐进式 Web 应用程序的一些基础知识,并且在我阅读的其中一篇教程中学习 [在安装了 service worker 并且用户导航到不同的页面或刷新后,service worker 将开始
我正在开发一个应用程序,其目标是定期(例如每小时)向用户发送通知。 我的想法是使用一个可以在选项卡关闭后运行的服务 worker ,并继续向用户发送这些通知。 网页需要能够与 Service Work
我正在尝试为一个简单但旧的 Django Web 应用程序安装 ServiceWorker。我开始使用示例 read-through caching example from the Chrome t
在我们开发的情况下,我们提供来自 https://localhost 的文件因为该应用程序托管在 salesforce.com 中。在 chrome service worker 中,chrome 会
我是服务人员的新手,并且浏览了各种文档(Google,Mozilla,serviceworke.rs,Github,StackOverflow questions)。最有用的是ServiceWorke
我正在解决一个问题,我有一组“热情的 worker ”。这意味着它们被维护在内存中,维护自己的上下文并且是可调用的。我一直在研究各种 Go Worker 实现,但都依赖于闭包或返回结果的简单计算函数。
我有一个部署到静态服务器的非根路径的网络应用程序。即MyApp构建时部署到路径/文件夹 https://example.com/myapp . MyApp正在使用 vue 和 webpack 所以我添
我是一名优秀的程序员,十分优秀!