web-dev-qa-db-ja.com

Azureでのアプリケーションの初期化の使用は、依然として非常に遅いことが証明されています

私の想定では、AzureでIIS8アプリケーションウォームアップをオンにすると、すべてのサイトがロード時にかなり瞬時に実行されますそうではありません

したがって、基本的には、次を使用してpreloadEnabledをオンにし、startModeAlwaysRunningに設定しました。

public class WebRole : RoleEntryPoint
{
    public override void Run()
    {
        using (var serverManager = new ServerManager())
        {
            foreach (var application in serverManager.Sites.SelectMany(c => c.Applications))
            {
                application["preloadEnabled"] = true;
            }

            foreach (var appPool in serverManager.ApplicationPools)
            {
                appPool["startMode"] = "AlwaysRunning";
            }

            serverManager.CommitChanges();
        }
    }
}

また、次の起動タスクを使用して、IISアプリプールと定期的なIIS再起動のリサイクルを無効にしました:

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.recycling.periodicRestart.time:00:00:00

私の各サイトでは、web.configに次のものを入れています。

<system.webServer>
    <applicationInitialization skipManagedModules="true">
        <add initializationPage="/" />
    </applicationInitialization>
</system.webServer>

しかし、それでも私のサイトはすべて最初のヒットで30秒かかります。いずれかのサイトにアクセスする前にマシンにリモート接続すると、すべての設定がIISに適用されていることがわかります。また、サイトが約60〜80 MBのメモリをアイドリングしていることもわかります(プリロードされていることを示しています)。

私の質問は、これはプリロードと同じくらい良いですか?確かにそれはより速いことを意味していますか?遅延は最小限で、最初のロードで2〜3秒になると思っていましたか?

7
mattytommo

デフォルトのIIS8インストールに含まれていないアプリケーション初期化モジュールを実際にインストールしたと思いますか?

このすばらしい投稿 をチェックして、すべてを稼働させる方法を確認してください。問題が解決する可能性があります。

2
Paul Hiles

質問に直接答えることはできませんが、Azureの新しい監視機能を利用して、サイトを動かし続けることができる場合があります。

クラウドサービスの下の管理ポータルを見ると、「Webエンドポイントステータス」というラベルの付いたセクションがあります。その値を設定すると、Azureは数分ごとにそのページをポーリングします。

0