2017-09-11 4 views
1

Je suis à la recherche de problèmes de performances dans mon application ASP.NET (Nancy, OWIN/System.Web hébergé). Par le profilage, (à savoir les outils Stackify), j'ai remarqué quelques «lacunes» à la fin de certaines demandes, qui ne sont pas des appels non évidents (par exemple, pas de base de données, HTTP, Redis, etc.).Comment puis-je obtenir la pile d'appel séquentielle complète d'une requête ASP.NET?

Voici un exemple: (extrait de l'outil Prefix de Stackify) enter image description here

Résumé:

  1. Demande a 1289ms
  2. 'Most' (chemin chaud) a été prise par une requête SQL. (Je suis bien avec ceci pour l'instant, pourrait être optimisé mais n'est pas l'objet de cette question)
  3. Couple de "code d'application non traqué" lacunes, prenant plus de 500ms.

Particulièrement, le dernier écart (340ms) que j'ai vu beaucoup et est l'objet de mes investigations.

Le préfixe custom code configuration permet d'obtenir plus d'informations sur ces "espaces" en ajoutant un assemblage à une liste blanche, mais le problème est que je ne sais pas quel assemblage est passé cette fois. Mon instinct est Nancy/OWIN/un peu d'injection de dépendance, etc. (J'ai essayé de les ajouter à la liste blanche en vain). Je sais juste que ce n'est pas mon code immédiat dans cette URL.

Mes questions sont les suivantes:

  1. Toutes les idées sur la façon dont je peux trouver la complète et ordonnée pile d'appel de cette demande, d'utiliser ensuite comme pour la liste blanche Prefix? Outils que je peux utiliser?
  2. Des idées de «gauche du centre» sur la façon de traquer cet écart? Un autre outil au lieu de préfixe qui me dit où le temps est passé?

Merci!

Répondre