3

この記事. 以下のコード。これは問題なく動作し、約 20 分間 (約 50 回の反復) 実行されます。ただし、この時間が経過するとスリープ状態になり、動作しなくなります。Azure portal に移動し、関数アプリをクリックして関数リストをクリックすると (つまり、クリックするだけで、設定を変更したり、何も停止/開始したりしません)、突然 "ウェイクアップ" し、問題なく続行します。ログにエラーや問題はありません。非アクティブな期間を示しているだけで、ログが再開されています。どこかに設定がありませんか?

public static async Task Run([OrchestrationTrigger] DurableOrchestrationContextBase ctx, ILogger log)
{
    try
    {
        var config = ctx.GetInput<Config>();
        config = await ctx.CallActivityAsync<Config>("GetConfig", null);
        await ctx.CallActivityAsync("ProcessDetails", config);

        var nextCheckpoint = ctx.CurrentUtcDateTime.AddSeconds(config.PollingIntervalInSeconds);

        await ctx.CreateTimer(nextCheckpoint, CancellationToken.None);             
        ctx.ContinueAsNew(config);   
    }
    catch (Exception ex)
    {
        log.LogError($"[Error!][Failed with: {ex.ToString()}]");
        throw;
    }
}

@davidebbo の説明に従って更新ボタンを押した後も問題は解決しません。以下のログを参照してください。

ここに画像の説明を入力

さらに更新すると、GitHub の問題は解決されたように見えますが、機能を信頼できるものにするために、以下に示すように二重構成設定を行う必要がありました。

{
  "version": "2.0",
  "extensions": {

    "durableTask": {
      "HubName": "myHub",
      "maxConcurrentActivityFunctions": 10,
      "maxConcurrentOrchestratorFunctions": 1
    }
  },
  "durableTask": {
    "HubName": "myHub",
    "maxConcurrentActivityFunctions": 10,
    "maxConcurrentOrchestratorFunctions": 1
  },
  "functionTimeout": "00:10:00"
} 

メトリクスはしっかりしているように見えますが、多くのコード最適化の後でもまだ問題があります。

ここに画像の説明を入力

4

2 に答える 2