web-dev-qa-db-ja.com

Asp.netコア2.2が最初のリクエストで遅くなる

起動タスクでサービスを事前に構築しているため、最初のリクエストがサーバーAPIメソッドに到達するまでに時間がかかります

 // This method gets called by the runtime. 
            // Use this method to add services to the container.
            public void ConfigureServices(IServiceCollection services)
            {
               services.AddTransient<IContactService, ContactService>();
               services.AddTransient<IPersonService, PersonService>();
               services.AddTransient<IDashboardService, DashboardService>();
               services.AddTransient<IEmployeeService, EmployeeService>();
               services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

                // In production, the React files will be served from this directory
                services.AddSpaStaticFiles(configuration =>
                {
                    configuration.RootPath = "ClientApp/build";
                });
            }

事前構築に時間がかかる100以上のサービスを注入する必要があります。

9

これは、アプリケーションプールが非アクティブ状態からリサイクルされるため、IIS構成に問題がある可能性があります。

ApplicationPoolのStart ModeAdvanced Settingsに設定すると、いつでも使用できるようになります。あなたがたまたまリサイクルが起こっているようにそれを呼ぶことを除いては。

これは次の方法で見つけることができます:

  1. IISを開く
  2. サーバールートの下にApplication Poolsを配置します
  3. 変更する特定のアプリケーションプールを右クリックします。
  4. を選択します詳細設定
  5. Start ModeAlwaysRunningに変更します

Advanced Settings Start Mode

リサイクルしたい場合はいつでも(29時間ごと)、リサイクルが設定された時間に行われるようにスケジュールして、邪魔にならないようにすることができます。同じAdvanced Settings画面で:

  1. Recycling見出しの場所
  2. Change Regular Time Interval (minutes)〜0
  3. Specific Timesをクリックし、...はTimeSpan []配列を示しています。
  4. 新しいダイアログで、更新する稼働時間外の静的時間を選択します。

enter image description here

3
Jeff

私にとってアイドルタイムアウトをより高い値に設定すると問題が解決しました

enter image description here

1
mrapi