web-dev-qa-db-fra.com

Asp.net core 2.2 lent sur première demande

La première demande prend du temps pour atteindre la méthode API du serveur car elle préconfigure les services dans une tâche de démarrage. Quelqu'un peut-il me suggérer de réduire la latence initiale de ma première demande après sa publication dans IIS

 // 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";
                });
            }

Besoin d'injecter plus de 100 services, il faut du temps pour la pré-construction.

9

Cela peut être un problème avec votre configuration IIS car le pool d'applications est recyclé de l'inactivité.

Si vous définissez le mode de démarrage d'ApplicationPool sous Paramètres avancés il doit être prêt à être utilisé chaque fois que vous l'appelez, sauf si il se trouve que vous l'appelez juste au moment du recyclage.

Cela peut être trouvé par:

  1. Ouvrir IIS
  2. Localisez Pools d'applications sous la racine de votre serveur
  3. Cliquez avec le bouton droit sur le Pool d'applications que vous souhaitez modifier
  4. Choisissez Paramètres avancés
  5. Changer Mode de démarrage en AlwaysRunning

Advanced Settings Start Mode

Pour le dernier problème de recyclage à chaque fois qu'il le souhaite (toutes les 29 heures), vous pouvez planifier que le recyclage se produise à une heure définie pour être discret. Sur le même écran Paramètres avancés:

  1. Positionnez l'en-tête Recyclage
  2. Change Regular Time Interval (minutes) à 0
  3. Développer Specific Times et cliquez sur ... où il est indiqué TimeSpan [] Array.
  4. Dans la nouvelle boîte de dialogue, choisissez une heure statique en dehors des heures de fonctionnement pour l'actualisation.

enter image description here

3
Jeff

pour moi, régler le délai d'inactivité sur une valeur plus élevée a résolu le problème

enter image description here

1
mrapi