web-dev-qa-db-ja.com

Azure Webアプリのリクエストタイムアウトを増やす

Azure Webアプリのリクエストタイムアウトを増やす方法はありますか?

リクエストを2分以上遅らせると、リクエストがエラー(空白ページが返される)または503のあいまいな応答なしで失敗します。

    public ActionResult Index()
    {
        System.Threading.Thread.Sleep(230000);
        return View();
    }

実行する必要のある長時間実行中のリクエストがあります(大きなファイル/大きなPDF変換ジョブをアップロードする)-これを回避する方法はありますか? VMホスティングは可能です。Webアプリを基本プランまたは標準プランにスケーリングしようとしましたが、違いはないようです。

22
woggles

いいえ、Azure App Servicesのタイムアウトを増やすことはできません(230秒です)。クラウドサービスに移動するか、IISでホストされ、VMこれらの設定を制御できます。クライアントが同期する非同期モデルに移動することもできます。リクエストを作成し、処理が完了したかどうかを確認するためにポーリングできるチケットまたは識別子を取得します。そこから選択できるWebアプリの非同期タイプモデルの多くの例があります。Ref: https: //social.msdn.Microsoft.com/Forums/en-US/05f254a6-9b34-4eb2-a5f7-2a82fb40135f/time-out-after-230-seconds?forum=windowsazurewebsitespreview

13

これが助けになることを願っています https://Azure.Microsoft.com/en-us/blog/new-configurable-idle-timeout-for-Azure-load-balancer/ 。しかし、いくつかの重いジョブが実行されている間、リクエストを保持するのは悪い考えだと思います。私見、あなたはバックグラウンドジョブを実装し、クライアントから時々そのステータスを確認した方が良いでしょう。

4
unconnected

Webサーバーでのデッドロックを回避するために、長時間実行することになっている場合は、アクションを非同期にしてみてください。

public async Task<ActionResult> Index()
{
    await Task.Delay(230000);
    return View();
}

また、コントローラーのコードでスクリプトタイムアウトを設定できます。

HttpContext.Current.Server.ScriptTimeout = 300;

HttpContextはリクエストごとにインスタンス化されるため、次のリクエストでデフォルト値に戻ることに注意してください

1
Aram

自動化スクリプトを使用してWebアプリをデプロイし、「リソース」の下に次の行を追加できます。

        {
          "name": "WEBSITES_CONTAINER_START_TIME_LIMIT",
          "value": 1800
        },

値はデフォルトで230ですが、1800まで増やすことができます。また、アプリケーション設定の下に、WEBSITES_CONTAINER_START_TIME_LIMITという名前で、希望する秒の値で新しい設定を追加することもできます。

0
Jake OPJ