VM에서 호스트되는 웹 서비스를 호출하는 Azure 함수가 있습니다. 이러한 종속성으로 인해 Azure 함수의 인스턴스가 8 개까지만 동시에 실행되는 것이 중요합니다 (VM에는 8 개의 코어가 있고 웹 서비스 호출마다 단일 코어가 사용됨). 8 개 이상의 인스턴스가 생성되면 웹 서비스 호출이 백업을 시작하고 Azure 함수를 트리거하는 큐의 항목이 시간 초과되기 시작하고 메시지가 삭제됩니다. 그러나 큐의 처리를 최대화하기 위해 가용 자원을 최대한 활용하여 큐에 8 개 이상의 항목이있을 때마다 항상 8 개의 Azure 함수가 실행되도록하고 싶습니다.Azure 함수 host.json queue batchSize newBatchThreshold보다 작음
을 : 내가 대신 소비 계획의 앱 서비스 계획을 실행하는 푸른 기능 계획을 설정하고 나는 푸른 기능 서비스에 대한 host.json에서 다음 값을 설정 한 필요한 조절을 달성하기 위해
{
"queues": {
"batchSize": 1,
"newBatchThreshold": 7
}
}
이론적으로 이것은 7 개 이하의 함수 인스턴스가 실행되는 한 8 개의 메시지가 처리 될 때까지 1 개의 더 많은 메시지가 대기열에서 제외됩니다. 지금 실행 중이며 제대로 작동하는 것 같지만 host.json 설명서 나 WebJobs SDK documentation에서 batchSize
이 newBatchThreshold
보다 작은 지 여부를 알려주는 곳을 찾을 수 없습니다. 나는 단지 권고가 의 절반이되도록 newBatchThreshold
에 대한 것임을 알고 있습니다.
제 질문은 :이 구성이 괜찮습니까? 아니면 내 조절 목표를 달성하기위한 더 좋은 방법이 있습니까?
주셔서 감사합니다. Consumption Azure Function을 사용하면 각각의 한계가있는 여러 인스턴스로 확장 될 수 있다는 것을 알고 있습니다. 그래서 App Service 계획을 사용하여 단일 인스턴스로 제한됩니다. 그러나 나는'WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT' 설정을 알지 못했기 때문에이 팁을 주셔서 감사합니다! – sam2929
@DavidEbbo'batchSize'는 나에게 정말로 혼란 스럽습니다. 나는 그것이 인스턴스 당 최대 병렬 실행에 대한 상한선이라고 생각했기 때문에, 값 1에 대해서는 어떤 병렬 인스턴스가 실행될 것으로 기대하지 않습니다. 나는'newBatchThreshold'가 즉시 실행이 아닌 프리 페치를 트리거 할 것이라고 생각했다. 나는 그것을 서비스 버스와 혼동스럽게 생각한다. – Mikhail
@Mikhail 예 그것은 혼란 스럽습니다. 현재 실행중인 수가 임계 값보다 작 으면 새 배치를 계속 잡아냅니다. –