【问题标题】:How can i get the full, sequenced call stack of an ASP.NET request?如何获得 ASP.NET 请求的完整、有序的调用堆栈?
【发布时间】:2018-02-19 04:22:39
【问题描述】:

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

通过分析(即 Stackify 工具),我注意到某些请求结束时存在一些“差距”,这些不是不明显的调用(例如,不是数据库、HTTP、Redis 等)。

这是一个示例:(取自 Stackify 的前缀工具)

总结:

  1. 请求耗时 1289 毫秒
  2. “大多数”(热路径)被 SQL 查询占用。 (我现在对此很好,可以优化但不是这个问题的重点)
  3. 几个“未跟踪的应用程序代码”间隙,占用时间超过 500 毫秒。

特别是最后一个间隙(340 毫秒)我见过很多,是我调查的重点。

前缀允许custom code configuration 允许通过将程序集列入白名单来获取有关这些“间隙”的更多信息,但问题是我不知道这次花费的是哪个程序集。我的直觉是 Nancy/OWIN/一些依赖注入库等(我尝试将所有这些都列入白名单,但无济于事)。我只知道这不是我在此 URL 中的 立即 代码。

所以我的问题是:

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

谢谢!

【问题讨论】:

  • 您知道如何解决“未跟踪的应用程序代码”延迟问题吗?

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


【解决方案1】:

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

看这篇文章 https://dzone.com/articles/troubleshooting-percona-monitoring-and-management

还有 https://support.stackify.com/custom-profiling-configure-for-net/

【讨论】:

    猜你喜欢
    • 2010-09-11
    • 2011-03-01
    • 2012-06-29
    • 2020-12-03
    • 1970-01-01
    • 2022-07-07
    • 2014-08-13
    • 2012-05-12
    • 1970-01-01
    相关资源
    最近更新 更多