Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PreRender - слишком долго, отрабатывает 
V
    Опции темы
Rickert
Дата 24.10.2008, 05:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Достался мне по наследству движок, который приходится разбирать на предмет производительности.
Первым делом включил трасировку и выяснил, что уходит 7 секунд на обработку PreRender события модуля, унаследованного от System.Web.UI.UserControl.
При этом PreRender не перегружен.
Шаблон для генерации страницы берётся из базы данных.
Я недавно начал изучать ASP .NET, поэтому возможно не додаю какие-то данные вам, спросите - помогите smile

Добавлено @ 05:22
Сейчас попробовал перопределить OnPreRender и поставил бряк в пустое тело функции - выполнение не остановилось.
При первом входе на страницу отрабатывает раз в 5 дольше.

Это сообщение отредактировал(а) Rickert - 24.10.2008, 05:23


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Idsa
Дата 24.10.2008, 05:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(Rickert @  24.10.2008,  09:14 Найти цитируемый пост)
Сейчас попробовал перопределить OnPreRender и поставил бряк в пустое тело функции - выполнение не остановилось.

Этого следовало ожидать smile

Цитата(Rickert @  24.10.2008,  09:14 Найти цитируемый пост)
При первом входе на страницу отрабатывает раз в 5 дольше.

При первом входе после билда? Нормальная практика. Во-первых, происходит динамическая компиляция, во-вторых считываются данные (некоторые из которых затем, как правило, заносятся в кэш, что позволяет сократить время загрузки при следующем посещении).

Цитата(Rickert @  24.10.2008,  09:14 Найти цитируемый пост)
Первым делом включил трасировку и выяснил, что уходит 7 секунд на обработку PreRender события модуля, унаследованного от System.Web.UI.UserControl.
При этом PreRender не перегружен.

Дело в том, что этот UserControl доступен на странице как protected поле, поэтому ничто не мешает подписаться на событие контрола, например, из самой страницы (или даже из других контролов: ((MyPage)anotherControl.Page).ThatUserControl.PreRender += lablabla). В этом случае трассировка - не лучший выход: стоит воспользоваться профайлером (например, ANTS Profiler), который в подробностях распишет кто, когда и главное где подписывается на это событие.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Rickert
Дата 24.10.2008, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Idsa, ссылкой угостишь?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Idsa
Дата 24.10.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Триал версию можно скачать с сайта фирмы Red-Gate: http://www.red-gate.com/Products/ants_profiler/index.htm


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Artemon
Дата 24.10.2008, 12:57 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: нет
Всего: 20



Вопрос к Idsa.

Есть 2 страницы, на одной странице допустим есть функция, ничего не принимающая и ничего не возвращающая.

Могу я эту функцию вызвать из другой страницы ?




--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Idsa
Дата 24.10.2008, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(Artemon @  24.10.2008,  16:57 Найти цитируемый пост)
Есть 2 страницы, на одной странице допустим есть функция, ничего не принимающая и ничего не возвращающая.

Могу я эту функцию вызвать из другой страницы ?

Сделаем вид, что этот вопрос относится к данному топику ;)

Конечно, можно. Страница - это обычный класс, поэтому, если уровень доступа позволяет, ничто не мешает вызвать этот метод. Однако, думаю, этот метод стоит вынести в бизнес-логику (ну или хотя бы просто в отдельный класс). Если же нет желания заниматься рефакторингом, можно сделать этот метод статическим, дабы не пришлось каждый раз создавать экземпляр страницы только для вызова метода.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Rickert
Дата 27.10.2008, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Благодаря ANTS увидел что задница в другой функции, которая корнями своими кривыми уходит в оракловую dll'ку для клиента.
Oracledataaccess.dll
Что-то не так с БД настройками. Почему на чтение из БД уходит 15 секунд, при этом сервере, где стоит БД почти не загружен и вообще особо не шевелится, при выполнении запросов - значит не в железе маза smile 
Тогда в чём? Много думаю...


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Idsa
Дата 27.10.2008, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Было бы интересно заглянуть в этот долгоиграющий метод, посмотреть, что же так тормозит систему (может, программист, работавший над проектом до этого, перед увольнением в гневе поставил там Thread.Sleep(10000); всякое бывает).

Еще интересно, каким образом этот метод оказался связанным с PreRender контрола при том, что у самого контрола это событие не обрабатывается.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Rickert
Дата 28.10.2008, 04:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Idsa, программист не увольнялся, сидит в соседнем офисе. А обращение к БД идёт через BLToolKit - там всё чисто. +все функции самого движка просмотрел - чисто.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Idsa
Дата 28.10.2008, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(Rickert @  28.10.2008,  08:47 Найти цитируемый пост)
Idsa, программист не увольнялся, сидит в соседнем офисе.

Это был не самый вероятный вариант, скорее, ирония smile

Цитата(Rickert @  28.10.2008,  08:47 Найти цитируемый пост)
А обращение к БД идёт через BLToolKit - там всё чисто. +все функции самого движка просмотрел - чисто. 

А что же такое считывается целых 15 секунд?

И все-таки, какова связь между этим методом и событием PreRender контрола? Трассировака же не могла соврать...


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Rickert
Дата 28.10.2008, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Idsa, она и не врала. В OnPreRender вызывался метод, в котором идёт обращение к БД.
Вообще странно всё. Тут видимо в сервере дело, ибо сейчас время отлика увеличилось троекратно и постоянно.
Нашёл много "задержек" в самом коде. Уж слишком навороченный движок у человек вышел.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Idsa
Дата 28.10.2008, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(Rickert @  28.10.2008,  11:05 Найти цитируемый пост)
В OnPreRender вызывался метод, в котором идёт обращение к БД.

Меня просто вот эта фраза смутила:
Цитата(Rickert @  24.10.2008,  09:14 Найти цитируемый пост)
Первым делом включил трасировку и выяснил, что уходит 7 секунд на обработку PreRender события модуля, унаследованного от System.Web.UI.UserControl.
При этом PreRender не перегружен.



--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Rickert
Дата 28.10.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



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


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.1362 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.