IIS7でホストされているASP.NET Web APIアプリケーションを作成しています(特別な構成はありません)。
私の問題は、最初のリクエストごとに(新しいマシン/新しいブラウザで/しばらくすると...)、定数を返すリクエストでも長い遅延が発生することです!
「ウォーミングアップ」スクリプトについて読みましたが、ここでは問題になりません。 Webサーバーがセッションを作成しようとしているようで、非常に時間がかかります。助言がありますか?
[〜#〜]編集[〜#〜]
遅延は、新しいセッションごとにワーカープロセスが作成されることが原因だと思います。ここで問題となるのは、なぜこれほど遅いのか、そしてなぜWebサーバーは生きているワーカープロセスを再利用してリクエストを処理しないのかということです。
タイムアウトなし(0に設定)でワーカープロセスを5に制限するようにアプリケーションプールを構成しました。これにより、最初のリクエスト(私は一緒に暮らすことができます)で最初の5つのセッションが遅くなり、ワーカープロセスが稼働しています。しかし、驚くべきことに、時々、リクエストは再び遅くなります!
Windows Server 2008 R2を使用している場合、アプリケーションプールで configure the Auto-Start feature
を実行できます。また、アプリケーションプールのプロパティで、定期的にリサイクルされないようにする必要があります。これにより速度が制限されますが、アプリケーションプールはIISによってリサイクルされる可能性があることに注意してください。自動開始機能を使用すると、メモリに自動的に再度読み込まれますが、Application_Start
のコードは次のリクエストで実行されます。したがって、まだいくらかの遅延が見られます。
もう1つの原因はhttpsです。私たちのサイトはhttpsの有無にかかわらず実行できます。最初のページでの遅延(5〜15秒)は、httpsを使用した場合にのみ発生します。この投稿では、httpsの問題と修正について説明しています。