web-dev-qa-db-ja.com

IIS Express localhostの最初のリクエストの読み込みが非常に遅い

重複として閉じる前に、私が試したことのリストを下で確認してください。


問題:

  • 新しいASP.NET MVCアプリケーションを作成し、アプリケーションをビルドして実行します->ページの読み込みに20-30秒かかります。
  • アプリケーションを再構築してからページを読み込もうとするたびに、前の構築の直後に実行しても20-30秒かかります(つまり、アイドルタイムアウトの問題ではないと思いますか?)。

私は昨日からこの問題に取り組んできました。運が悪かったので、この問題について見つけたすべての投稿/記事を読みました。しかし、私はASP.NETとWeb開発一般に不慣れであり、IIS構成に精通していないため、何かを見落としている可能性があることを認めなければなりません。

私が試したもの:

  • ウイルス対策とファイアウォールを無効にした。

  • ホストファイルの::1 localhost行をコメント化してIPv6を無効にしました。私のホストファイルは次のようになります。

    127.0.0.1       localhost
    # ::1             localhost
    
  • 別のブラウザを試してみました。

  • アプリケーションURLのポートを変更しました。

  • アプリケーションのURLをlocalhost:portから127.0.0.1:portに変更しましたが、変更すると次のようになります。

    不正なリクエスト-無効なホスト名

  • アンインストールして再インストールしたIIS Express(複数のバージョンを試した:7.5、8.0、10.0)。

  • Internet Information Services\World Wide Web Servicesの下にある「アプリケーション開発機能」のインストールを試みました。

  • VSインストーラーを起動し、修復を実行しました。

環境情報:

  • Windows 7 x64。
  • Visual Studio 2015。
  • .NET 4.5.2。
  • IISで現在有効になっている機能: IIS Expressを使用しているため、これが関連しているかどうかはわかりません。

IIS enabled features

この問題の原因は何ですか?


更新:

Jexus Managerを使用してみました。示されているように.slnファイルから構成をロードします here 、Webサイトを開始し、次のシナリオを試みました:

  • Webサイトの再起動後の閲覧(Jexus Managerでの両方のアクション)-> 15-20秒。
  • VS-> 30秒以上でソリューションを再構築した後、Jexusを使用してWebサイトを閲覧します。
9

Asp.Net MVCアプリを初めて起動したときに起こることはたくさんあるので、ボトルネックを引き起こしている可能性のある原因を正確に1つ特定することはできませんが、Webアプリの起動時間を改善するのに役立つ次の提案を試してください。

  1. 常にリリースモードでVisual StudioからWebアプリを実行します(私はあなたがそれを知っていることを知っていますが、それでも置く必要があります)
  2. Web.configファイルを確認し、System.Web\compilationにはdebug=false
  3. 小切手 Application_StartメソッドGlobal.asax.cs不要な呼び出しを削除するファイル
  4. かみそりビューはデフォルトで実行時にコンパイルされるため、実行時にビューで変更を行わない場合は、かみそりビューを事前にコンパイルしていることを確認してください RazorGenerator ビューをコンパイルします。
  5. プロファイラー、たとえば Glimpse を使用してアプリケーションのプロファイルを作成します。

これにより、起動時にアプリが向上することを願っています。

6
Dipen Shah

これには、次の理由が考えられます。

  • サーバーの処理負荷が大きい。
  • 特定のワーカープロセスは常にアイドル状態です。
  • 新しい処理スペースはありません。

アイドルタイムアウトアクションと呼ばれるよく偽装されたオプションがあり、これは詳細設定アプリケーションプールで変更できます。 time-out操作は、デフォルトでTerminateに設定されています。これは、サイトをホストしているWindowsプロセスが終了することを意味します。この終了が発生した場合、サイトを構築し、次の訪問時にプロセスを開始する必要があるため、初回のロードが非常に遅くなります。

サービスまたは少数のサイト専用のサーバーを実行している場合は、スタイルが明らかに窮屈です。このような場合は、0に設定するのがよいでしょう。他は1740分と主張している。どうして? 24を超える最小の素数(時間単位)です。

microsoft Windows Server 2012 R2でIdle Time-out Actionを0に変更するには、IISにアクセスし、サイトにサービスを提供するアプリケーションプールを選択します右側のメニューで[詳細設定]を選択し、[アイドルタイムアウト(分)]オプションを見つけて、0に変更し、[OK]を押します。

別の可能な解決策:IIS feature Application Initializationをインストールします。次に、この構成で動作するはずです:

  • アプリケーションプールで開始モードをAlwaysRunningに設定します
  • Preload Enabledto True to the weblevel level。