powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / на веб сервере EnumerateDirectories, EnumerateFiles тормозит
17 сообщений из 17, страница 1 из 1
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39011880
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро !

Вопрос в следующем в сетке на IIS крутится веб приложение , на одной из страниц есть некое подобие File manager , реализовано с помощью DirectoryInfo, FileInfo ( EnumerateDirectories, EnumerateFiles). Пользователю нужно просматривать одну папка по сетевому пути (есть там вложения на 2-3 уровня) на другом сервере в сетке и выбирать для себя нужные файлы.

На машине разработчика все летает, на IIS долго сканирует папки , на самом сервере где крутится IIS если лазить по папке сетевой тормозов не заметно.

В чем может быть причина тормозов ?

Спасибо.
...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39011882
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306Доброе утро !

Вопрос в следующем в сетке на IIS крутится веб приложение , на одной из страниц есть некое подобие File manager , реализовано с помощью DirectoryInfo, FileInfo ( EnumerateDirectories, EnumerateFiles). Пользователю нужно просматривать одну папка по сетевому пути (есть там вложения на 2-3 уровня) на другом сервере в сетке и выбирать для себя нужные файлы.

На машине разработчика все летает, на IIS долго сканирует папки , на самом сервере где крутится IIS если лазить по папке сетевой тормозов не заметно.

В чем может быть причина тормозов ?

Спасибо.

держи

http://www.codeproject.com/Articles/38959/A-Faster-Directory-Enumerator
...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39011885
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Спасибо попробую
...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39011888
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя по моему методы (Directory) возвращают не все аттрибуты файлов , которые есть (DirectoryInfo)
...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39012060
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переделал на FastDirectoryEnumerator.EnumerateFiles, стало чуть быстрее , но все равно разница между хостингом и рабочей машиной значительна....
...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39012283
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306Переделал на FastDirectoryEnumerator.EnumerateFiles, стало чуть быстрее , но все равно разница между хостингом и рабочей машиной значительна....

Мне почему-то кажется, это из-за вычисления прав. Не уверен конечно, не сталкивался. Попробуй папке на серваке для теста выставить права на чтение "Все". Позырь, поможет ли.
...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39012327
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAndrey1306Переделал на FastDirectoryEnumerator.EnumerateFiles, стало чуть быстрее , но все равно разница между хостингом и рабочей машиной значительна....

Мне почему-то кажется, это из-за вычисления прав. Не уверен конечно, не сталкивался. Попробуй папке на серваке для теста выставить права на чтение "Все". Позырь, поможет ли.


Попробую, права админ на папку выставлены только чтение действительно....
...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39012968
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Не помогло ......
...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39012969
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пусть переносят винт или разбираются с сеткой
...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39012979
мсущко9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сборка приложения собрана в Release, надеюсь?
...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39013029
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306Переделал на FastDirectoryEnumerator.EnumerateFiles, стало чуть быстрее , но все равно разница между хостингом и рабочей машиной значительна....
Давай код, гадать будем.
...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39013039
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущко9Сборка приложения собрана в Release, надеюсь?

да
...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39013148
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Терзают меня смутные сомнения, что не правильно я диагноз поставил (((

Провтыкал

до сего момента метод выполняется до 1 секунды (со сканом директорий и формированием данных)
2015-07-22 10:58:28.4557, DEBUG, get JavaScriptSerializer Milliseconds: - 992,
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
            LogService.Debug("get JavaScriptSerializer Milliseconds: - {0}", (DateTime.Now - start_T).Milliseconds);

            return Json(new
            {
                dir = _dirs,
                pathtofile = pathtofile_prep,
                files = _files,
                breadcrumb = ser_breadcrumb,
                fullpath_files = di.FullName,
                fullpath_folder = di.FullName
            }


            , JsonRequestBehavior.AllowGet);



а почему тормозит return Json(new ... не пойму

...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39013909
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306Терзают меня смутные сомнения, что не правильно я диагноз поставил (((
Код на бочку.
...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39014143
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НахлобучAndrey1306Терзают меня смутные сомнения, что не правильно я диагноз поставил (((
Код на бочку.


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
 public JsonResult DirectoryInformation(string path)
        {
            var start_T = DateTime.Now;  
            bool root = false;
            if (Settings.EmergencyServicesSettings.AudioRecords_104 == path)
            {
                path = Settings.EmergencyServicesSettings.AudioRecords_104;
                root = true;
            }


            Uri directory = new Uri(path);
            DirectoryInfo di = new DirectoryInfo(directory.LocalPath);
            if (!di.Exists)
            {
                return Json(new
                {
                    breadcrumb = "",
                    resultdirectoryinformation = "Папка " + directory.LocalPath + " не існує",
                    defaultpath = Settings.EmergencyServicesSettings.AudioRecords_104,
                }, JsonRequestBehavior.AllowGet);

            }

            List<BreadCrumb> breadcrumb_ = new List<BreadCrumb>();
            breadcrumb_.Add(new BreadCrumb { directory = new DirectoryInfo(Settings.EmergencyServicesSettings.AudioRecords_104) });
            breadcrumb_.AddRange(GetAllParentDirectories(di).ToList());
            DateTime start = GetStartDirectoryDate();
            IEnumerable<DirectoryInfo> di_prep;
       
            List<AudioFileInfo> afi_List = GetListAudioFileInfo(di);



            string fullpath_files = di.FullName;
            string fullpath_folder = di.FullName;

            if (!root)
            {
                if (di.EnumerateDirectories().Count() == 0)
                {
                    di = di.Parent;
                }
                di_prep = di.EnumerateDirectories().Where(x => x.CreationTime > start).OrderByDescending(x => x.CreationTime);
            }
            else
            {
                di_prep = di.EnumerateDirectories().OrderBy(x => x.Name);
            }


            JavaScriptSerializer ser = new JavaScriptSerializer();
            string ser_breadcrumb = ser.Serialize(breadcrumb_);


            var _dirs = di_prep.Select(post => new
            Dir
            {
                name = post.Name,
               
            }).ToList();

            var _files = ser.Serialize(afi_List);


            LogService.Debug("get JavaScriptSerializer Milliseconds: - {0}", (DateTime.Now - start_T).Milliseconds);


            RootObject ro = new RootObject
            {
                 breadcrumb = ser_breadcrumb,
                 dir = _dirs,
                 files = _files,
                 fullpath_files = di.FullName,
                 fullpath_folder = di.FullName,
            };


            return Json(new { data = ser.Serialize(ro) }, JsonRequestBehavior.AllowGet);

        }


  private List<AudioFileInfo> GetListAudioFileInfo(DirectoryInfo di)
        {
            List<AudioFileInfo> afi_List = new List<AudioFileInfo>();
         
           
            foreach (FileData f in FastDirectoryEnumerator.EnumerateFiles(di.FullName, "*.wav", SearchOption.TopDirectoryOnly))
            {
                string filename = f.Path.Replace(di.FullName + System.IO.Path.DirectorySeparatorChar, "");
                AudioFileInfo afi = new AudioFileInfo
                {

                    FileModel = new RequestAudioFileModel
                    {
                        AudioChannel = di.Parent.Name,
                        AudioFileName = filename,
                        DateCreateFile = GetDateCreateFile(di.CreationTime, filename),
                        FullFileName = f.Path
                    }
                };
                afi_List.Add(afi);
            }
        

            return afi_List.OrderByDescending(x => x.FileModel.DateCreateFile).ToList();
        }





вот тут LogService.Debug("get JavaScriptSerializer Milliseconds: - {0}", (DateTime.Now - start_T).Milliseconds); логирует порядка 500-800 Milliseconds.
а во факту браузер показывает 8-10 секунд
...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39014464
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй

Код: c#
1.
2.
3.
var result = Json(new { data = ser.Serialize(ro) }, JsonRequestBehavior.AllowGet);
// Сколько времени заняла сериализация
return result;
...
Рейтинг: 0 / 0
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
    #39014484
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч,

та вроде быстро

Код: c#
1.
2.
3.
4.
  var start_T = DateTime.Now;  
            var result = Json(new { data = ser.Serialize(ro) }, JsonRequestBehavior.AllowGet);
            LogService.Debug("get JavaScriptSerializer Milliseconds: - {0}", (DateTime.Now - start_T).Milliseconds);
            return result;




2015-07-23 08:00:19.9439, DEBUG, get JavaScriptSerializer Milliseconds: - 296,
2015-07-23 08:00:32.0339, DEBUG, get JavaScriptSerializer Milliseconds: - 924,
2015-07-23 08:00:40.0055, DEBUG, get JavaScriptSerializer Milliseconds: - 666,
2015-07-23 08:52:18.0617, DEBUG, get JavaScriptSerializer Milliseconds: - 853,
2015-07-23 09:44:54.1501, DEBUG, get JavaScriptSerializer Milliseconds: - 62,
2015-07-23 09:45:04.7893, DEBUG, get JavaScriptSerializer Milliseconds: - 300,
2015-07-23 09:45:12.6985, DEBUG, get JavaScriptSerializer Milliseconds: - 681,
2015-07-23 10:03:31.8297, DEBUG, get JavaScriptSerializer Milliseconds: - 31,
2015-07-23 10:03:42.8121, DEBUG, get JavaScriptSerializer Milliseconds: - 238,
2015-07-23 10:03:50.1909, DEBUG, get JavaScriptSerializer Milliseconds: - 915,
2015-07-23 10:45:30.5009, DEBUG, get JavaScriptSerializer Milliseconds: - 93,
2015-07-23 10:45:42.0137, DEBUG, get JavaScriptSerializer Milliseconds: - 472,
2015-07-23 10:45:50.0477, DEBUG, get JavaScriptSerializer Milliseconds: - 165,
2015-07-23 10:59:20.0479, DEBUG, get JavaScriptSerializer Milliseconds: - 46,
2015-07-23 10:59:35.2424, DEBUG, get JavaScriptSerializer Milliseconds: - 160,
2015-07-23 10:59:43.6040, DEBUG, get JavaScriptSerializer Milliseconds: - 102,
2015-07-23 11:11:38.1632, DEBUG, get JavaScriptSerializer Milliseconds: - 149,
2015-07-23 12:20:00.2060, DEBUG, get JavaScriptSerializer Milliseconds: - 109,
2015-07-23 12:20:12.2181, DEBUG, get JavaScriptSerializer Milliseconds: - 238,
2015-07-23 12:20:22.7013, DEBUG, get JavaScriptSerializer Milliseconds: - 102,
2015-07-23 12:26:29.2083, DEBUG, get JavaScriptSerializer Milliseconds: - 62,
2015-07-23 12:26:40.7367, DEBUG, get JavaScriptSerializer Milliseconds: - 51,
2015-07-23 12:26:48.9268, DEBUG, get JavaScriptSerializer Milliseconds: - 102,
2015-07-23 12:37:47.9031, DEBUG, get JavaScriptSerializer Milliseconds: - 31,
2015-07-23 12:37:59.5095, DEBUG, get JavaScriptSerializer Milliseconds: - 300,
2015-07-23 12:38:07.4811, DEBUG, get JavaScriptSerializer Milliseconds: - 180,
2015-07-23 12:53:54.4964, DEBUG, get JavaScriptSerializer Milliseconds: - 31,
2015-07-23 12:54:05.5880, DEBUG, get JavaScriptSerializer Milliseconds: - 300,
2015-07-23 12:54:13.4660, DEBUG, get JavaScriptSerializer Milliseconds: - 118,
2015-07-23 13:05:25.3436, DEBUG, get JavaScriptSerializer Milliseconds: - 31,
2015-07-23 13:05:37.0124, DEBUG, get JavaScriptSerializer Milliseconds: - 254,
2015-07-23 13:06:01.9881, DEBUG, get JavaScriptSerializer Milliseconds: - 836,
2015-07-23 13:32:41.5057, DEBUG, get JavaScriptSerializer Milliseconds: - 460,
2015-07-23 14:06:59.5237, DEBUG, get JavaScriptSerializer Milliseconds: - 7,
2015-07-23 14:16:01.1567, DEBUG, get JavaScriptSerializer Milliseconds: - 249,

...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / на веб сервере EnumerateDirectories, EnumerateFiles тормозит
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]