【问题标题】:PerfView showing thousands of random FileOpenOrCreate during thread exhaustionPerfView 在线程耗尽期间显示数千个随机 FileOpenOrCreate
【发布时间】:2021-05-20 04:46:26
【问题描述】:

有谁知道为什么我会收到数千次 FileOpenOrCreate 调用,以使用 PerfView 和集合的进程/文件/注册表堆栈部分来查找随机 .cshtml 和 .vbhtml 文件?

【问题讨论】:

    标签: .net performance iis cpu perfview


    【解决方案1】:

    如果您只花一点时间在源代码上(但不知道如何定位源文件),您可以看到 ASP.NET 运行时 (WebPageRoute) 正在尝试将请求路径映射到文件系统路径,

    https://github.com/aspnet/AspNetWebStack/blob/42991b3d2537b702736463f76a10a4fcf2ea44c9/src/System.Web.WebPages/WebPageRoute.cs#L35

    在该过程中,它使用MapPathBasedVirtualPathProvider 中的缓存,

    https://referencesource.microsoft.com/#System.Web/Hosting/MapPathBasedVirtualPathProvider.cs,78

    PerfView 记录的文件系统访问与建立这样一个缓存的行为相匹配,所以那里似乎没有任何问题。

    【讨论】:

    • 为什么要搜索包含数千张图片的共享驱动器?那没有意义。为什么它使用完整的 URL 并将其视为路径?我知道它与行为匹配,但它试图在其上执行此操作的文件夹不正常。
    • 只有 ASP.NET 的开发人员知道什么是有意义的,所以如果您愿意,请与他们交谈,看看他们的反应,github.com/aspnet/AspNetWebStack/issues
    猜你喜欢
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    • 2019-07-17
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多