Existe-t-il un moyen de déterminer pourquoi Azure App Service a redémarré ?
Source : Stack Overflow [azure]
Existe-t-il un moyen de déterminer pourquoi Azure App Service a redémarré ?
Source : Stack Overflow [azure]
Donc, il semble que la réponse soit « non, vous ne pouvez pas vraiment savoir pourquoi, vous pouvez juste déduire que ça s’est produit ».
Je veux dire, vous pouvez ajouter de la journalisation Application Insights comme :
private void Application_End()
{
log.Warn($"The application is shutting down because of '{HostingEnvironment.ShutdownReason}'.");
TelemetryConfiguration.Active.TelemetryChannel.Flush();
// Server Channel flush is async, wait a little while and hope for the best
Thread.Sleep(TimeSpan.FromSeconds(2));
}
et vous obtiendrez "The application is shutting down because of 'ConfigurationChange'." ou "The application is shutting down because of 'HostingEnvironment'.", mais cela ne vous dit pas vraiment ce qui se passe au niveau de l’hôte.
Ce que j’ai dû accepter, c’est qu’App Service va redémarrer les choses de temps en temps, et me demander pourquoi cela me préoccupait. App Service est censé être assez intelligent pour attendre que le pool d’applications soit initialisé avant de lui envoyer des requêtes (comme le recyclage chevauchant). Pourtant, mes applications restaient là à consommer du CPU pendant 1 à 2 minutes après un recyclage.
Il m’a fallu un moment pour comprendre, mais le coupable était que toutes mes applications ont une règle de réécriture pour rediriger HTTP vers HTTPS. Cela ne fonctionne pas avec le module Application Initialization : il envoie une requête à la racine, et tout ce qu’il obtient est une redirection 301 du module URL Rewrite, et le pipeline ASP.NET n’est pas du tout touché, le travail intensif n’était pas réellement effectué. App Service/IIS pensait alors que le processus de travail était prêt et envoyait le trafic vers lui. Mais la première « vraie » requête suit en fait la redirection 301 vers l’URL HTTPS, et boum ! cet utilisateur subit la douleur d’un démarrage à froid.
J’ai ajouté une règle de réécriture décrite ici pour exempter le module Application Initialization de la nécessité du HTTPS, de sorte que lorsqu’il atteint la racine du site, il déclenche réellement le chargement de la page et
(Réponse tronquée)