我正在尝试在我的 ASP.NET(Nancy,OWIN/System.Web 托管)应用程序中寻找一些性能问题。
通过分析(即 Stackify 工具),我注意到某些请求结束时存在一些“差距”,这不是不明显的调用(例如,不是数据库、HTTP、Redis 等)。
概括:
- 请求耗时 1289 毫秒
- “大多数”(热路径)由 SQL 查询获取。(我现在对此很好,可以优化但不是这个问题的重点)
- 几个“未跟踪的应用程序代码”间隙,占用超过 500 毫秒。
特别是最后一个间隙(340ms)我见过很多,是我调查的重点。
前缀允许自定义代码配置,允许通过将程序集列入白名单来获取有关这些“差距”的更多信息,但问题是我不知道这次花费的是哪个程序集。我的直觉是 Nancy/OWIN/一些依赖注入库等(我尝试将所有这些都列入白名单,但无济于事)。我只知道这不是我在这个 URL 中的直接代码。
所以我的问题是:
- 关于如何找出此请求的完整和有序调用堆栈,然后用作前缀白名单的任何想法?我可以使用的工具?
- 关于如何追查这一差距的任何“中心左翼”想法?另一个工具而不是 Prefix,它告诉我时间花在哪里?
谢谢!