web-dev-qa-db-ja.com

IISは非常に遅い

Windows VistaデュアルコアCPUでIIS7を使用しています。 WCFサービスまたはASP.NET Webフォームに初めてアクセスしたときに、1分よりも時間がかかることがありますが、これは実際には許容できません。

クラシック.NETアプリケーションプールを使用するようにアプリケーションを構成し、最大ワーカープロセスを試してみました。最初は4に設定しましたが、予期した結果が得られなかったため、1に戻しました。他に試すことができるものはありますか?

6
Nyla Pareska

コンパイルモードについては、web.configファイルを確認してください。開発中は、サイトをデバッグモードで実行する必要があります。リリースモードで実行している場合は、ヒットしたページやコントロールだけでなく、すべてのaspxとascxが一時アセンブリにコンパイルされます。また、バッチをfalseに設定します。

<configuration>
    <system.web>
         <compilation debug="true" batch="false" ...>
         ...
         </compilation>
    ...
    </system.web>
    ...

もちろん、これらはこれらの変更によって遅くなる実稼働環境には推奨されません。


また、ASP.NET一時ファイルフォルダーのアクセス許可をリセットするなど、いくつかの興味深いヒントを見つけることができる このフォーラムのスレッド を確認してください。

私は同じ問題を抱えており、このフォーラムで述べられているようにすべての調整を行いましたが、それは助けにはなりませんでした。 DLLの読み込み時間が遅いのはセキュリティ設定に関係しているのではないかと疑い始めました。 DLLへのアクセスは、VIsual Studioの一部ではなく、オペレーティングシステムの一部であるセキュリティチェックを通過するようです。 dllは、次のアプリケーションのディレクトリにあります。

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\

セキュリティチェックを高速化するには、上記のディレクトリにあるアプリケーションのルートフォルダー、または「Temporary ASP.NET Files」に適用する場合は、すべてのセキュリティ設定を削除する必要があります。開発するすべてのWebアプリケーション。

フォルダを右クリックして、[プロパティ]-> [セキュリティ]を選択します。

すべてのユーザーとグループを削除します。一部は親フォルダから権限を継承しているため、削除を許可されません。最初に[詳細]ボタンをクリックして継承を削除してから、[親から継承...]チェックボックスをオフにする必要があります。次に、ユーザーまたはグループを削除します。権限のチェックボックスがグレー表示されているユーザーまたはグループがあってはなりません。それらがグレー表示されている場合は、その親から継承を削除していないことを意味します。

フォルダからすべてのユーザーとグループを削除したら、次のユーザーとグループを追加する必要があります。

管理者ユーザーASPNETネットワークネットワークサービスローカルサービス

これらの各アカウントに完全な権限を付与します。もう一度[詳細設定]ボタンをクリックして、[すべての子オブジェクトのアクセス許可エントリを置き換える...]チェックボックスをオフにします。

8
splattne

これはDNSの問題と同じくらい簡単かもしれません。アクセスするときにlocalhostではなく127.0.0.1を使用してみてください。これが機能する場合は、127.0.0.1をhostsファイルに追加するか、常にlocalhost IP経由でアクセスします。

2
Beep beep

これは、ビルドされたアプリケーションに初めてアクセスしたときですか?これは珍しいことではありません。WebアプリケーションはDLLなどから物事をコンパイルする必要があり、その後のロードでより高速になるからです。

0
Sam Cogan

これがアプリケーションの起動時に発生している場合は、少なくとも再起動するまで、または他の理由でIISが再起動するまで) idle timeout 設定をオフにすると役立つはずです。ただし、アプリケーションの起動に時間がかかる理由についての質問です。

0
jlupolt