Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / на веб сервере EnumerateDirectories, EnumerateFiles тормозит / 17 сообщений из 17, страница 1 из 1
21.07.2015, 09:11
    #39011880
Andrey1306
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
Доброе утро !

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

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

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

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

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

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

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

Спасибо.

держи

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

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

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

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


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

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

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

Провтыкал

до сего момента метод выполняется до 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
22.07.2015, 19:43
    #39013909
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
Andrey1306Терзают меня смутные сомнения, что не правильно я диагноз поставил (((
Код на бочку.
...
Рейтинг: 0 / 0
23.07.2015, 08:38
    #39014143
Andrey1306
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
Нахлобуч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
23.07.2015, 14:04
    #39014464
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
на веб сервере EnumerateDirectories, EnumerateFiles тормозит
Попробуй

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

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

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


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