我想自動根據待處理列表的大小來調整/縮小我的dynos。Autoscaling在Heroku實時Resque工作人員
我聽說HireFire,但縮放只是每分鐘進行一次,我需要它(幾乎)實時。
我想擴展我的dynos,以便掛起的列表總是空的。我正在考慮自己做(使用調度程序(延遲15秒)並使用Heroku API),因爲我不確定哪裏有什麼東西;如果不是的話,你是否知道任何可以發送電子郵件警報的監控工具,如果隊列長度超過固定大小? (類似於newrelic上的apdex)。
我想自動根據待處理列表的大小來調整/縮小我的dynos。Autoscaling在Heroku實時Resque工作人員
我聽說HireFire,但縮放只是每分鐘進行一次,我需要它(幾乎)實時。
我想擴展我的dynos,以便掛起的列表總是空的。我正在考慮自己做(使用調度程序(延遲15秒)並使用Heroku API),因爲我不確定哪裏有什麼東西;如果不是的話,你是否知道任何可以發送電子郵件警報的監控工具,如果隊列長度超過固定大小? (類似於newrelic上的apdex)。
潛在的自定義代碼解決方案如下。還有兩個可以進行Resque監控的New Relic系統。我不確定是否基於超出特定隊列大小發送電子郵件警報。使用resque hooks,您可以通過Papertrail或Loggly等服務輸出可能觸發電子郵件警報(或閒置,hipchat,pagerduty等)的日誌消息。這可能看起來像:
def after_enqueue_pending_check(*args)
job_count = Resque.info[:pending].to_i
if job_count > PENDING_THRESHOLD
Rails.logger.warn('pending queue threshold exceeded')
end
end
而不是註銷,你可以發送電子郵件,但如果沒有某種形式的速率限制,如果不確定隊列快速增長,你可以很容易就淹沒在電子郵件。
我不認爲有一個Heroku插件或其他服務可以實時進行縮放。有一個gem這將使用不推薦的Heroku API。您可以使用resque hooks和Heroku platform-api來做到這一點。這個未經測試的示例使用heroku platform-api來上下調整「工作人員」dynos。就如同一個例子,我每三個待完成的工作就包括一名工人。如果沒有未完成的工作和沒有工作的工作,則每個工作人員的下調幅度只會將工人重置爲1。這並不理想,應該更新以適應您的需求。看到這裏,瞭解有關確保再縮減工人,你不會失去工作:有一個類似的問題,並已跑進「Hirefire」
https://www.hirefire.io/http://quickleft.com/blog/heroku-s-cedar-stack-will-kill-your-resque-workers
require 'platform-api'
def after_enqueue_upscale(*args)
heroku = PlatformAPI.connect_oauth('OAUTH_TOKEN')
worker_count = heroku.formation.info('app-name','worker')["quantity"]
job_count = Resque.info[:pending].to_i
# one worker for every 3 jobs (minimum of 1)
new_worker_count = ((job_count/3) + 1).to_i
return if new_worker_count <= worker_count
heroku.formation.update('app-name', 'worker', {"quantity" => new_worker_count})
end
def after_perform_downscale
heroku = PlatformAPI.connect_oauth('OAUTH_TOKEN')
if Resque.info[:pending].to_i == 0 && Resque.info[:working].to_i == 0
heroku.formation.update('app-name', 'worker', {"quantity" => 1})
end
end
林。
對於紅寶石,使用方法:
https://github.com/hirefire/hirefire-resource
它運行類似於理論上就像AdepScale(https://www.adeptscale.com/)。然而,Hirefire也可以擴展工作人員,並不會將自己限制在只有dynos。希望這可以幫助!
Thx,但我並不是真的在尋找源代碼解決方案。我正在尋找縮放工具或監控工具;) – 2014-08-28 08:02:45
Aha。我編輯了一個潛在的警報解決方案,但我不認爲有現成的產品可以滿足您的需求。 – 2014-08-28 15:31:33