2017-11-09 8 views
0

Azure Batch에 많은 수의 작업을 보내려고합니다. 세 가지 작업이 있고 그 작업에 걸쳐 총 67,000 개의 작업이 분산되어 있습니다.노드 SDK를 사용하여 Azure 배치 작업에 작업 보내기

몇 가지 작업 만 보내면 전체 목록을 보내 자마자 제대로 된 오류 메시지가 나타나지 않고 넘어지는 것처럼 보입니다. 합계에 어떤 종류의 제한이 있습니까? 아니면 내가 그들을 보낼 수있는 속도? Azure 함수, 노드 SDK를 사용 중이며 작업을 비동기 적으로 추가한다고 약속합니다.

   async.each(tasks, function(task, callback) { 
        var taskID = task.id + '_process'; 

        var config = { 
         id: taskID, 
         displayName: 'Render portion ' + task.id + ' in job ' + task.job.id, 
         commandLine: "python3 main.py '" + JSON.stringify(task) + "'" 
        }; 

        batchClient.task.add(task.job.id, config).then(function(result) { 
         context.log('Task for portion : ' + task.id + ' submitted successfully'); 
         callback(); 
        }).catch(function(error){ 
         context.log('Task failed to be added'); 
         callbacK(error); 
        }); 

       }, function(error) { 
        if(error) { 
         context.log('Error adding task.'); 
         context.res = { body: error }; 
         context.done(); 
        } else { 
         context.log('All tasks have been queued successfully'); 
         context.res = { body: 'All tasks have been queued successfully' }; 
         context.done(); 
        } 
       }); 

이 시점에서 나는 계속해서 뭔가를 제공하기 만하면 오류가 발생하기까지 매우 기쁩니다. 나는 10 개의 작업을 보내려고했는데 제대로 작동하고 65,000을 보내면 자동으로 실패합니다.

+0

Hiya Mark, I 이 점을 더 잘 이해하기 위해서는 몇 가지 사항이 중요 할 것입니다. 작업로드는 어떻게 생겼습니까? (즉, 플레이중인 수영장 수, 디자인에 어떤 전략이 있습니까?) 또한 정확한 사용자 오류를 제발 쏠 수 있습니까? ':)'감사합니다! –

+0

작업 부하는 단일 풀의 세 작업에 걸쳐 65,000 개의 작업으로 분산되어 있습니다. 풀에는 총 128 개의 NC6 머신 ~ 780 개의 코어가 있습니다. 스크립트에서 전혀 오류 메시지가 나타나지 않으며 30 분의 실행 시간 후에 만 ​​시간 초과가 발생합니다. – Mark

답변

1

단일 API 호출에서 컬렉션 API가 최대 100 개의 작업을 수행 할 수 있으므로 작업 추가 API 대신 Add task collection 개의 API를 사용하는 것이 좋습니다. 이렇게하면 총 100 회의 API 호출 수를 줄일 수 있습니다.

해당 API를 사용하여 여전히 문제가 발생하는 경우 SDK에 실제로 높은 수준의 병렬 처리가 포함될 수 있습니다 ... 배치에 대한 호출을 제거하고 코드에 문제가 없다는 것을 확인하는 것이 좋습니다 (단순한 http로 고정 URL을 대체하는 것이 어쩌면 고정 URL에 붙이십니까?)

+0

고마워, 내가 추가 작업 컬렉션을 사용하여 전환에 대한 계정에 내 코드를 리팩터링했다,하지만 완벽하게 일했다! – Mark