2017-11-30 4 views
0

충돌이 발생하지 않지만 첫 번째 호출 후에도 동일한 기능을 계속 실행하는 내구성이있는 기능이 있습니다. 중단 점을 설정하려고 시도한 첫 번째 호출 후에 아무 효과가 없습니다.내구성 기능 실행 유지

 
[30/11/2017 16:16:21] Function started (Id=972ee93c-ab61-4834-937c-207e8953821d) 
[30/11/2017 16:16:21] Executing 'CompileFeatureObservations' (Reason='', Id=972ee93c-ab61-4834-937c-207e8953821d) 
[30/11/2017 16:16:21] Starting Feature Compilation. 
[30/11/2017 16:16:21] Function completed (Success, Id=972ee93c-ab61-4834-937c-207e8953821d, Duration=58ms) 
[30/11/2017 16:16:21] Executed 'CompileFeatureObservations' (Succeeded, Id=972ee93c-ab61-4834-937c-207e8953821d) 
[30/11/2017 16:16:21] b540b650019244719a7f3a61e45735f4: Function 'CompileFeatureObservations (Activity)', version '' completed. ContinuedAsNew: False. IsReplay: False. Output: (62123 bytes). State: Completed. HubName: DurableFunctionsHub. AppName: . SlotName: . ExtensionVersion: 1.0.0.0.

영향을받는 것으로 보이는 유일한 요인은 요청한 페이로드의 크기입니다 (65KB 제한 미만 임에도 불구하고).

설명서에 설명 된대로 팬 아웃/팬 인 패턴을 사용하고 있습니다. 내 작업 배열의 크기가 ~ 100이되면 작동을 멈추고 끝없는 주기로 들어갑니다.

아마도 팬 아웃 한도를 초과 했습니까? "인스턴스"함수의 수를 제어하는 ​​방법이 있습니까?

소비 계획을 사용하고 있습니다.

동작을 중지 할 수있는 유일한 방법은 로컬 저장소 에뮬레이터를 중지하고 기본 localdb를 삭제하고 다시 시작하는 것입니다.

문제를 해결하기위한 제안 사항이 있습니까?

+0

코드를 공유해야합니다. – Mikhail

+0

권한이 없습니다. 계산을 실행하는 것처럼 map/reduce를 실행 중입니다. 디버그하는 동안 오류 및 try/catch 블록은 예외를 catch하지 않습니다. 나는 그것이 fan-out 작전의 수와 관련이 있다고 생각한다. – user1200984

답변

2

저는 문제가 여기에 언급 된 알려진 문제인 함수의 큰 출력임을 확신합니다 : https://github.com/Azure/azure-functions-durable-extension/issues/79.

[30/11/2017 16:16:21] b540b650019244719a7f3a61e45735f4: Function 'CompileFeatureObservations (Activity)', version '' completed. ContinuedAsNew: False. IsReplay: False. Output: (62123 bytes). State: Completed. 

그것은 출력이 약 60 KB입니다 주장하지만 UTF-8 인코딩을 가정하기 때문에 여기에보고 수는, 실제로는 정확하지 :

여기에 오해의 소지가되는 것은이 로그 문입니다. 실제로 Azure Storage는 UTF-32 인코딩을 사용하므로 실제 크기가 이보다 훨씬 클 수 있습니다. 이 문제를 수정해야한다는 점을 유의하겠습니다. beta2 업데이트에서는이를 올바르게보고하고 예외를 throw합니다. 그 후 언젠가 우리는 임의로 큰 반환 값을 지원할 것입니다.

질문의 다른 부분에 답하는 것만으로 팬 아웃의 정도는 문제가되지 않습니다. 그것은 단순히 당신의 반환 가치의 크기입니다. 이 문제를 줄이면 문제가 해결됩니다.

+0

아, 내 입력 페이로드가 너무 커서 60KB 미만인 경우에도 그 이유를 설명합니다. – user1200984

+0

그래서 여기에가는 방법은'CompileFeatureObservations' 함수의 결과를 documentdb에 저장 한 다음 내 오케스트레이터에서 검색하는 것이지만 오케 스트레이터에서 그렇게 할 수없는 것처럼 보입니다. 따라서 팬 아웃을 계산하고 오케 스트레이터에서 시작하는 방법을 잘 모릅니다. 간단히 말해서 대형화물을 통과시키는 법. – user1200984

+0

Google은 대형 메시지 지원 (https://github.com/Azure/azure-functions-durable-extension/issues/26)을 위해 노력하고 있습니다. 그 때까지 오케스트레이션을 리팩토링해야합니다. 하나의 옵션은 하위 오케스트레이션을 사용하여 더 작거나 중첩 된 팬 아웃/팬 인을 수행하는 것입니다. large-ish 페이로드를 전달해야하는 경우 blob 저장소 바인딩을 사용하여 데이터를 blob 저장소에 저장하고 URL을 전달할 수도 있습니다. –