很多這取決於腳本的性能特點。如果cpu密集程度非常高但影響不大,那麼我不會擔心:當使用類似heroku調度程序的作業時,作業會在單獨的dyno中運行。由於它是一個獨立的測試儀,它不會影響正在服務請求的其他dynos。
沉重的數據庫使用是另一回事。你的數據庫有一定數量的IO,緩存,CPU等,如果你努力推動它(大量的寫入通常比許多讀取更糟糕,因爲那些高速緩存),那麼你可能會降低你的其他dynos的性能。
也可以停止網站工作 - 如果你的工作最終鎖定了其他應用試圖訪問的行/表上的鎖,那麼你的網絡動態鏈將被阻止,直到你的工作釋放鎖。
如果您在解析feed時逐個更新數據庫行,那麼您可能會確定:在鎖爭用方面,大量小寫入/讀取比大量寫入/讀取要好,不認爲你會碰到很難的分貝,因爲它聽起來像你一般會從索引列中一次加載一行,做一些紅寶石計算,然後更新一行。
如果您發現性能被降級不可接受的,然後如果瓶頸是讀一個出路是有一個讀取從站(也稱爲副本,或在Heroku的說話follower)。簡而言之,這是一個單獨的只讀數據庫服務器,用於跟蹤主數據庫服務器(因此它總是非常新的)。你對這個服務器做的任何事情都不會影響你的主數據庫,所以你可以不必擔心地查詢。
如果問題是您需要執行的寫入次數,則這不會對您有所幫助。在某種程度上,這可以通過切換到更強大的數據庫服務器來解決(付費)。對於某些使用模式,不同類型的數據存儲(例如mongo,redis)有時比關係數據庫更合適。有時候可以設計出一些性能熱點,但顯然你是最適合考慮的人。
這是非常抽象的 - 你真正知道的唯一方法就是通過嘗試。設置你的應用程序的副本,啓動此任務,看看性能如何下降(或者如果你不擔心一次性影響,可以對真實應用程序執行此操作)
你可以看看gem https: //github.com/javan/whenever。 – afaf12 2012-04-28 20:45:40