開發者工具 · Crontab 產生器
每分鐘執行一個 cron 作業:輪詢何時出錯以及使用什麼
· 為什麼它很重要
規劃任務 投票 效能
每分鐘的工作寫起來很容易,但忍受起來卻很昂貴。這篇文章解釋了成本、它們合理的情況,以及從更長的時間間隔到守護程式和事件觸發器的替代方案。
每分鐘語法在完整的 24 小時一天中建立 1,440 日曆候選
`* * * * *` 擴展到從 0 到 59 的每分鐘、每小時和每個日曆日期。在完整的二十四小時的一天中,產生 1,440 匹配掛鐘分鐘標籤。 ToolAcre 的預設和測試建立了語法,而其預覽僅顯示接下來的五個候選者,以保持介面的可讀性。
計數描述的是機會,而不是成功的行動。此預覽可以忽略正向區域轉換期間不存在的本地分鐘,且瀏覽器從不執行任務。使用表達式推斷節奏,然後測量命令和調度程序存在的實際執行時效果。
無法僅根據表達式計算執行時成本
表達式不包含進程啟動時間、連線計數、日誌量或資源使用情況。一行檢查和大量進口可以共享相同的五星級,但成本卻無與倫比。工作簿中的間接費用清單可能是合理的,但 ToolAcre 無法從計畫文字中量化它們。
因此,效能分析從產生器外部開始:觀察持續時間、CPU、I/O 和實際操作的下游呼叫。僅在測量代表性執行後才仔細乘以候選頻率。解析器可以告訴您有多少分鐘值匹配;它無法告訴您每場比賽的費用是多少。
適用性取決於外部操作和延遲要求
每分鐘輪詢是否合理取決於延遲要求和操作設計。 ToolAcre 不知道該指令是否冪等、是否存在事件來源或使用者可以容忍多長時間的延遲。它不應該給時間表貼上本質上好或壞的標籤。
將要求轉換為最大可接受間隔,然後與觀察到的成本和故障處理進行比較。如果五分鐘的延遲就足夠了,`*/5 * * * *` 將分鐘候選數減少到每小時十二分鐘。如果只有一分鐘的延遲有效,請保留節奏並明確解決執行問題。
分鐘偏移分配固定的每小時工作,但不隨機化
固定偏移(例如 `7 * * * *`)選擇每小時的第七分鐘。它可以將該工作與固定在零分鐘的工作分開,但它是確定性的而不是隨機的。當確切的工作時間並不重要時,多個偏移量可以在整個小時內分配已知的作業。
ToolAcre 描述每小時過去七分並預覽對應的日期。它不會檢查主機上的其他計劃,因此無法證明所選偏移量是安靜的。在分配負載之前建立庫存,並在檔案中保留抵銷的原因。
工作執行緒和服務計時器是此儲存庫以外的替代方案
長時間運作的工作執行緒、事件交付和服務管理員計時器可以取代某些系統中的輪詢。 Crontab 產生器未實作任何一個,且無法從 `* * * * *` 推斷出它們的配置。該存儲庫沒有隊列客戶端或主管整合。
從目標架構的證明中選擇替代方案。工作人員可以在引入生命週期和復原要求的同時刪除重複啟動。事件路徑可以減少空檢查,同時加入傳遞語意。產生器對於任何剩餘的週期性任務仍然有用,但它無法裁決這些權衡。
工作範例:減少候選頻率並比較預覽
比較面板中的三個表達式:每分鐘、`*/5 * * * *` 和 `7 * * * *`。第一個前進一分鐘,第二個選擇 0、5、10 及後續倍數,第三個選擇每小時一分鐘位置。這些描述公開了每個更改,而無需執行輪詢器。
使用這些候選清單來具體討論延遲。如果請求在五分鐘候選之後立即到達,那麼下一個機會幾乎還需要五分鐘。這個簡單的界線就是時間表證據。處理持續時間、佇列延遲和成功仍然是瀏覽器無法提供的附加測量值。
這不包括什麼——亞分鐘調度,這是 cron 無法表達的
五個欄位 cron 無法表示秒,因為此解析器以分鐘開頭。六場輸入被拒絕,而不是被視為更高的頻率。建立 shell 循環來模擬亞分鐘工作是 ToolAcre 外部的命令行為,如果沒有特定於執行時的測試,則不建議在此處進行操作。
如果要求低於一分鐘,請選擇為該解決方案設計和記錄的排程器或工作人員。不要將不受支援的秒值強制輸入第一個欄位。精確的五個欄位錯誤是一個有用的方言保護,可以防止快速的表達被無聲地誤讀。
重點:選擇滿足需求的最粗略間隔 - 產生器使 */5 或 */15 表達式像五顆星一樣簡單
選擇滿足測量需求的最粗節奏,但將決策與表達有效性分開。 ToolAcre 可以讓分鐘、五分鐘和偏移時間表在語法上同樣正確。只有操作證據才能確定哪一個屬於系統。
使用產生器枚舉機會,然後附加來自目標的成本、延遲和可靠性測量。這種綜合記錄比宣告在所有情況下每分鐘 cron 都昂貴或假設頻率較低的表達式自動修復低效工作更誠實。