私の想定では、AzureでIIS8アプリケーションウォームアップをオンにすると、すべてのサイトがロード時にかなり瞬時に実行されますそうではありません。
したがって、基本的には、次を使用してpreloadEnabled
をオンにし、startMode
をAlwaysRunning
に設定しました。
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秒になると思っていましたか?
デフォルトのIIS8インストールに含まれていないアプリケーション初期化モジュールを実際にインストールしたと思いますか?
このすばらしい投稿 をチェックして、すべてを稼働させる方法を確認してください。問題が解決する可能性があります。
質問に直接答えることはできませんが、Azureの新しい監視機能を利用して、サイトを動かし続けることができる場合があります。
クラウドサービスの下の管理ポータルを見ると、「Webエンドポイントステータス」というラベルの付いたセクションがあります。その値を設定すると、Azureは数分ごとにそのページをポーリングします。