Различия в производительности при использовании GetDirectories - PullRequest
4 голосов
/ 01 сентября 2010

У меня есть проблема с производительностью, на которую я нахожусь.Я надеюсь, что кто-то видел нечто подобное или, по крайней мере, имеет несколько методов устранения неполадок.

Я поддерживаю унаследованное веб-приложение asp.net, которое извлекает файлы с общего сетевого диска.Одна конкретная папка [назовем ее FOLDERA], для которой я решил устранить неполадки, содержит около 300 Мб файлов и несколько подпапок.FOLDERA считается большой для этого приложения.Начиная с недавнего времени пользователи испытывали низкую производительность при извлечении файлов из FOLDERA в общий сетевой ресурс.Я сузил код до метода GetDirectories в приложении asp.net.

RootDir.GetDirectories("*", SearchOption.AllDirectories);

В работе чтение FOLDERA занимает около 8-10 секунд.До недавнего снижения производительности это было около 1 секунды.В тестовой среде это занимает 1-2 секунды с тем же объемом данных.

Моя теория - проблема с сетью, потому что в те же выходные, когда пользователи замечали проблемы, были те же выходные и обновление оборудования.Однако я не знаю, как определить или доказать это сетевым инженерам.

Буду признателен за идеи о том, что может происходить.

1 Ответ

0 голосов
/ 15 сентября 2010

Я использовал тот же точный метод для большого общего каталога, чтобы извлечь и проиндексировать несколько тысяч PDF-файлов (~ 80000, размер не имеет значения) без проблем с производительностью (1-2 секунды)

Вы можете попытаться сравнить IO из общего файлового ресурса между средами разработки и производства с помощью внешней программы, чтобы подтвердить свою теорию, исключив любые дефекты программного обеспечения и передавая проблему персоналу инфраструктуры.

С другой стороны, вы можете легко кэшировать эту информацию с помощью CacheDependency на стороне сервера, в зависимости от архитектуры приложения. Это существенно оптимизировало бы производительность, если бы это было основной функцией.

...