如何获得ASP.NET请求的完整,有序的调用堆栈?

时间:2017-09-11 01:14:03

标签: asp.net .net nancy stackify code-profiling

我正在尝试在我的ASP.NET(Nancy,OWIN / System.Web托管)应用中寻找一些性能问题。

通过分析(即Stackify工具),我注意到某些请求结束时出现了一些“缺口”,这些缺点不是非显而易见的调用(例如,不是数据库,HTTP,Redis等)。

这是一个例子:(取自Stackify的前缀工具) /sys/netinet/tcp_subr.c :: tcp_drop()

要点:

  1. 请求耗时1289毫秒
  2. 'Most'(热路径)由SQL查询获取。 (我现在很好,可以优化,但不是这个问题的焦点)
  3. 几个'未跟踪的应用程序代码'缺口,耗时超过500毫秒。
  4. 特别是,最近的差距(340毫秒)我见过很多,是我调查的重点。

    前缀允许is confirmed to send RST elsewhere on SO允许通过将程序集列入白名单来获取有关这些“间隙”的更多信息,但问题是我不知道这次花费了哪个程序集。我的直觉是Nancy / OWIN /一些依赖注入lib等等(我已经尝试将所有这些列入白名单,但无济于事)。我知道这不是我在此网址中的立即代码。

    所以我的问题是:

    1. 关于如何找到此请求的完整和有序调用堆栈的任何想法,然后将其用作前缀的白名单?我可以用的工具吗?
    2. 关于如何追踪这一差距的任何“左中心”想法?另一个工具而不是前缀告诉我时间花在哪里?
    3. 谢谢!

1 个答案:

答案 0 :(得分:0)

您可以通过创建包含应以JSON格式分析的类和方法的JSON文件(允许使用通配符)来为Prefix和Retrace设置自定义.Net代码分析。

请参阅此文章 https://dzone.com/articles/troubleshooting-percona-monitoring-and-management

以及  https://support.stackify.com/custom-profiling-configure-for-net/