PerfView показывает тысячи случайных файлов, которые создаются во время исчерпания потока

#.net #performance #iis #cpu #perfview

Вопрос:

Кто-нибудь знает, почему я получаю тысячи вызовов в FileOpenOrCreate в поисках случайных файлов .cshtml и .vbhtml с помощью 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, соответствует поведению создания такого кэша, поэтому, похоже, там нет ничего плохого.

Комментарии:

1. Почему он ищет общий диск с тысячами изображений? Это не имеет смысла. Почему он использует полные URL-адреса и рассматривает их как путь? Я понимаю, что это соответствует поведению, но папки, в которых он пытается это сделать, ненормальны.

2. Только разработчики ASP.NET знайте, что имеет смысл, поэтому, если хотите, поговорите с ними и посмотрите, что они ответят, github.com/aspnet/AspNetWebStack/issues