2017-09-27 2 views
1

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에서 batchSizenewBatchThreshold보다 작은 지 여부를 알려주는 곳을 찾을 수 없습니다. 나는 단지 권고가 의 절반이되도록 newBatchThreshold에 대한 것임을 알고 있습니다.

제 질문은 :이 구성이 괜찮습니까? 아니면 내 조절 목표를 달성하기위한 더 좋은 방법이 있습니까?

답변

4

예, 괜찮습니다. 각 플래그는 정확한 (일종의 혼란스러운) 의미론을 가지며, 모든 조합이 유효하며 문서화 된 의미를 존중합니다.

Consumption Azure Functions를 사용하면 여러 인스턴스로 확장 될 수 있습니다. 각 인스턴스에는 이러한 제한이 있습니다. 이 문제를 피하려면 WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT을 1로 설정하십시오. https://github.com/Azure/azure-webjobs-sdk-script/wiki/Configuration-Settings

+0

주셔서 감사합니다. Consumption Azure Function을 사용하면 각각의 한계가있는 여러 인스턴스로 확장 될 수 있다는 것을 알고 있습니다. 그래서 App Service 계획을 사용하여 단일 인스턴스로 제한됩니다. 그러나 나는'WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT' 설정을 알지 못했기 때문에이 팁을 주셔서 감사합니다! – sam2929

+0

@DavidEbbo'batchSize'는 나에게 정말로 혼란 스럽습니다. 나는 그것이 인스턴스 당 최대 병렬 실행에 대한 상한선이라고 생각했기 때문에, 값 1에 대해서는 어떤 병렬 인스턴스가 실행될 것으로 기대하지 않습니다. 나는'newBatchThreshold'가 즉시 실행이 아닌 프리 페치를 트리거 할 것이라고 생각했다. 나는 그것을 서비스 버스와 혼동스럽게 생각한다. – Mikhail

+0

@Mikhail 예 그것은 혼란 스럽습니다. 현재 실행중인 수가 임계 값보다 작 으면 새 배치를 계속 잡아냅니다. –

관련 문제