2016-08-02 21 views
2

我對通過Rails的工作人員啓動一個進程的一個項目,這是非常耗費資源的工作,它只能通過在Heroku上演奏工人處理不當,1X工人被殺害,因爲他們使用的RAM過多,而2X工作人員幾乎無法處理超過RAM限制的負載高達160%。表演工作者沒有問題就可以完成這項工作。動態在Heroku上的Rails應用程序擴展迪諾工人大小

我的問題是,有沒有辦法給作業前發起動態切換功機大小的性能,然後擴展它背下來,一旦工作完成,或者隊列爲空?

我知道HireFire存在,但據我所知,這項服務不僅增加了工作人員的基礎上,隊列長度等的金額是多少?我想過的另一個可能的解決方案是使用Heroku API,它有一個Dyno端點,在作業開始之前調整工人動態調整大小,然後在作業結束時將其重新調整大小。

別人是否針對此問題其他建議,想法或戰略?

謝謝!

回答

1

最好的辦法是你提到的:使用Heroku Platform API開始作業前,擴展您的測功機的大小了,然後再下來之後。

這是因爲像HireFire這樣的工具只能通過檢查諸如應用程序響應時間,路由器隊列等東西來工作 - 所以他們無法知道您即將運行某項工作然後爲此擴展。

+0

謝謝,是的,我認爲這將是唯一的解決方案之一。 Heroku建議:「通過平臺API管理這種方法是實現它的一種方式,但如果您想要另一種方法,您可以考慮使用heroku toolbelt buildpack,這將允許您訪問dyno內的工具欄。」抱歉,我沒有一個更簡單的解決方案,你直接。「 – rii

1

根據具體使用情況,您可能只能在proc文件中創建一個不同的動態類型,它只運行這個特定的工作器,並且總是被調整爲performance,但並不總是運行?你甚至可以只運行一次運行,而不是擴展它(這也可以通過API完成,大致相當於heroku run ...)。這就是說,@ rdegges的答案應該肯定有效。

+0

這是一個有趣的想法,我會研究它。 – rii

相關問題