0

ユーザーのいない新しいアプリケーションがあります。Azureに初めて公開するときに、コードがコンパイルされるときに遅延が発生することを知っています。ただし、アプリケーションを使用した後、約30分後に再度アクセスしようとすると、最初は非常に遅く、アクセスすると速くなります。MVC4を使用し、ログイン認証のためにSQLServerに接続するアプリケーション。

タイムアウトや遅延はありますか?しばらく使用すると、サービスがスリープモードになってウェイクアップしますか?

4

1 に答える 1

0

既定では、サーバー リソースを節約するために、IIS は非アクティブ状態が 20 分間続くとアプリケーション プールをシャットダウンします。 http://technet.microsoft.com/en-us/library/cc771956(v=ws.10).aspx

ここで、Azure をさらに興味深いものにするために、私の知る限り、アプリケーションの web.config ファイルからこの設定を構成することはできず、UI、コマンド ライン、または machine.config ファイルのいずれかを使用して構成します。しかし、希望はあります!

これは、Web/worker ロールを使用していることを前提としており、新しい Web サイトではありません。

IIS 構成を行う Web ロールのスタートアップ タスクを作成する必要があります。起動時に実行するように Web ロールに指示する単純なバッチ ファイルです。 詳細はこちらにありますが、基本的に .cmd ファイルは次のようになります。

REM *** This keeps this file from running on your local emulator. 
if "%EMULATED%"=="true" goto :EOF

REM *** Prevent the IIS app pools from shutting down due to being idle. 
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00

REM *** Prevent IIS app pool recycles from recycling on the default schedule of 1740 minutes (29 hours). 
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.recycling.periodicRestart.time:00:00:00

また、serviceDefintion.csdef ファイルに、次のスキーマ要素を追加します (ファイルを Web アプリケーションのスタートアップ フォルダーに配置し、disableTimeout.cmd という名前を付けたと仮定します)。

<Startup>
  <Task commandLine="startup\disableTimeout.cmd" executionContext="elevated" />
</Startup>

アプリケーション プールのリサイクルとアイドル タイムアウトには正当な理由がある場合がありますが、サイトのトラフィックが少ない場合は、それほど頻繁に発生しないように調整できます。

于 2013-02-15T21:05:35.003 に答える