3

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

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

这是一个示例:(取自 Stackify 的前缀工具) 在此处输入图像描述

概括:

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

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

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

所以我的问题是:

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

谢谢!

4

1 回答 1

1

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

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

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

于 2018-01-25T11:56:08.750 回答