한국어

개발자 도구 · Crontab 생성기

매분마다 cron 작업 실행: 폴링이 잘못된 경우 및 사용 방법

· 그것이 중요한 이유

크론 폴링 실적

5개 필드로 구성된 와일드카드 표현식 옆에 60분 틱 표시
원본 ToolAcre 벡터 일러스트레이션

매분 작업은 작성하기 쉽고 유지 비용이 많이 듭니다. 이 게시물에서는 비용, 비용이 정당화되는 사례, 더 긴 간격에서 데몬 및 이벤트 트리거에 대한 대안을 설명합니다.

매분 구문은 하루 24시간 동안 1,440 달력 후보를 생성합니다.

`* * * * *`는 0부터 59까지 매분, 매시간, 매 달력 날짜로 확장됩니다. 하루 24시간 동안 벽시계 분 라벨과 일치하는 1,440을 생성합니다. ToolAcre의 사전 설정 및 테스트는 문법을 설정하는 반면 미리 보기에는 인터페이스를 읽기 쉽게 유지하기 위한 다음 5개의 후보만 표시됩니다.

개수는 성공적인 작업이 아닌 기회를 설명합니다. 이 미리 보기에서는 정방향 영역 전환 중 존재하지 않는 로컬 분을 생략할 수 있으며 브라우저는 작업을 실행하지 않습니다. 표현식을 사용하여 케이던스를 추론한 다음 명령과 스케줄러가 존재하는 실제 런타임 효과를 측정합니다.

런타임 비용은 표현식만으로는 계산할 수 없습니다.

표현식에는 프로세스 시작 시간, 연결 수, 로그 볼륨 또는 리소스 사용량이 포함되어 있지 않습니다. 한 줄짜리 수표와 큰 수입품은 비교할 수 없는 비용을 부과하면서 동일한 별 5개를 공유할 수 있습니다. 통합 문서의 오버헤드 목록은 그럴듯하지만 ToolAcre는 일정 텍스트에서 이를 정량화할 수 없습니다.

따라서 성능 분석은 생성기 외부에서 시작됩니다. 즉, 지속 시간, CPU, I/O 및 실제 작업에 대한 다운스트림 호출을 관찰합니다. 대표 실행을 측정한 후에만 후보 빈도를 신중하게 곱하십시오. 파서는 몇 분 값이 일치하는지 알려줄 수 있습니다. 각 경기 비용이 얼마인지는 알 수 없습니다.

적합성은 외부 작업 및 대기 시간 요구 사항에 따라 달라집니다.

매분 폴링이 정당한지 여부는 대기 시간 요구 사항 및 작업 설계에 따라 다릅니다. ToolAcre는 명령이 멱등성인지, 이벤트 소스가 존재하는지 또는 사용자가 허용할 수 있는 지연을 알지 못합니다. 일정에 본질적으로 좋은지 나쁜지 라벨을 붙여서는 안 됩니다.

요구 사항을 허용 가능한 최대 간격으로 변환한 다음 이를 관찰된 비용 및 실패 처리와 비교합니다. 5분의 대기 시간이 충분할 경우 `*/5 * * * *`는 분 후보를 시간당 12분으로 줄입니다. 1분의 대기 시간만 작동하는 경우 흐름을 유지하고 실행 문제를 명시적으로 해결합니다.

분 오프셋은 고정된 시간당 작업을 분배하지만 무작위로 지정하지는 않습니다.

`7 * * * *`와 같은 고정 오프셋은 매시간 7분을 선택합니다. 해당 작업을 0분까지 고정된 작업과 분리할 수 있지만 무작위가 아니라 결정적입니다. 여러 오프셋을 사용하면 정확한 벽 시간이 중요하지 않은 시간 동안 알려진 작업을 배포할 수 있습니다.

ToolAcre는 매 시간 7분을 설명하고 해당 날짜를 미리 봅니다. 호스트의 다른 일정을 검사하지 않으므로 선택한 오프셋이 조용하다는 것을 증명할 수 없습니다. 청구 부하가 분산되기 전에 재고를 구축하고 문서에 상쇄 사유를 보관하세요.

작업자 및 서비스 타이머는 이 저장소 외부의 대안입니다.

장기 실행 작업자, 이벤트 전달 및 서비스 관리자 타이머는 일부 시스템에서 폴링을 대체할 수 있습니다. Crontab 생성기는 아무것도 구현하지 않으며 해당 구성은 `* * * * *`에서 추론할 수 없습니다. 저장소에는 대기열 클라이언트 또는 감독자 통합이 없습니다.

대상 아키텍처의 증거에서 대안을 선택합니다. 작업자는 수명 주기 및 복구 요구 사항을 도입하면서 반복적인 시작을 제거할 수 있습니다. 이벤트 경로는 배달 의미를 추가하면서 빈 검사를 줄일 수 있습니다. 생성기는 잔여 주기적 작업에 여전히 유용하지만 이러한 장단점을 판단할 수는 없습니다.

실제 사례: 후보 빈도를 줄이고 미리보기 비교

패널의 세 가지 표현식인 매분, `*/5 * * * *` 및 `7 * * * *`을 비교합니다. 첫 번째는 1분씩 진행하고, 두 번째는 0, 5, 10 및 후속 배수를 선택하고, 세 번째는 시간당 1분 위치를 선택합니다. 설명은 폴러를 실행하지 않고 각 변경 사항을 노출합니다.

이러한 후보 목록을 사용하여 구체적인 용어로 대기 시간을 논의합니다. 5분 후보자가 나온 직후에 요청이 도착하면 다음 기회는 거의 5분 남았습니다. 그 간단한 경계는 일정 증거입니다. 처리 기간, 대기열 지연 및 성공은 브라우저가 제공할 수 없는 추가 측정값으로 남아 있습니다.

여기서 다루지 않는 내용 — cron이 표현할 수 없는 분 단위 예약

5개 필드 cron은 이 구문 분석기가 분으로 시작하므로 초를 표시할 수 없습니다. 6개 필드 입력은 더 높은 주파수로 처리되지 않고 거부됩니다. 1분 미만의 작업을 에뮬레이트하기 위해 쉘 루프를 생성하는 것은 ToolAcre 외부의 명령 동작이며 여기에서는 런타임별 테스트 없이는 권장되지 않습니다.

요구 사항이 1분 미만인 경우 해당 해결을 위해 설계되고 문서화된 스케줄러 또는 작업자를 선택하십시오. 지원되지 않는 초 값을 첫 번째 필드에 강제로 입력하지 마십시오. 정확한 5개 필드 오류는 빠르게 보이는 표현이 조용히 잘못 읽히는 것을 방지하는 유용한 방언 보호 장치입니다.

요약: 요구 사항을 충족하는 가장 거친 간격을 선택하면 생성기가 별 5개만큼 쉽게 */5 또는 */15 표현식을 만듭니다.

측정된 요구 사항을 충족하는 가장 대략적인 흐름을 선택하되 표현 타당성과는 별도로 결정을 유지하십시오. ToolAcre는 분, 5분 및 오프셋 일정을 구문적으로 똑같이 정확하게 만들 수 있습니다. 운영 증거만이 시스템에 어느 것이 속하는지 결정합니다.

생성기를 사용하여 기회를 열거한 다음 대상의 비용, 대기 시간 및 안정성 측정값을 연결합니다. 이러한 결합된 기록은 모든 경우에 매분 크론을 비싸다고 선언하거나 덜 빈번한 표현이 자동으로 비효율적인 작업을 수정한다고 가정하는 것보다 더 정직합니다.