Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Почему так медленно?
|
|||
|---|---|---|---|
|
#18+
Иммется некоторый сайт. На нём есть несколько страниц. Причём на некторых выдятся данные из БД. При первом обращении к страницам, которые требуют срединения с БД, они грузятся долго. При следующей загрузке (с промежутком времени где-то 3 минуты) всё происходит быстро. Но по прошествии минут 5-7 время загрузки таких страниц, которые требуют соединения с БД, значительно увеличивается. В чём причина такого тормоза? Вроде пуллинг по умолчанию true, т.е.используются уже готовые подключения. Примечания: *БД - MS SQL 2000 **Обращения к БД происходит через хранимые процедуры. ***Данное явление не относится к страницам, не требующих соединения к БД. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2006, 12:04 |
|
||
|
Почему так медленно?
|
|||
|---|---|---|---|
|
#18+
какое время жизни соединения в пуле установлены в web.config? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2006, 13:48 |
|
||
|
Почему так медленно?
|
|||
|---|---|---|---|
|
#18+
Посмотрите настройки сервера - когда происходит Recycle для Application Pool, такое вполне может быть, если "передергивается" пул приложения и все начинается заново.-- Гайдар Магдануров E-Mail | Блог | Сайт Difficult I do now, impossible will take a while... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2006, 14:58 |
|
||
|
Почему так медленно?
|
|||
|---|---|---|---|
|
#18+
>какое время жизни соединения в пуле установлены в web.config? В web.config ничего не прописано, по умолчанию время жизни пула "0", т.е. подключение имеет максимальное время ожидания. >Посмотрите настройки сервера - когда происходит Recycle для Application Pool, такое вполне может быть, если "передергивается" пул приложения и все начинается заново. Тоже всё по умолчанию 1740 мин, я вообще галочку убрал, ничего не поменялось. Может ещё, что-нибудь посоветуете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2006, 12:19 |
|
||
|
Почему так медленно?
|
|||
|---|---|---|---|
|
#18+
Запустите SQL Profiler и посмотрите, на самом ли деле проблема в запросах к SQL Server-у? Может у Вас данные в сессии хранятся, например, out of process, и это дело долго занимает? Может ViewState здоровенный? Короче, нужно сначала уточнить диагноз, а потом уже будем лечить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2006, 20:32 |
|
||
|
Почему так медленно?
|
|||
|---|---|---|---|
|
#18+
>Запустите SQL Profiler и посмотрите, на самом ли деле проблема в запросах к SQL Server-у? Может у Вас данные в сессии хранятся, например, out of process, и это дело долго занимает? Может ViewState здоровенный? Данные в сесси хранятся. Но что-то мне кажется это не корень проблемы. ViewState тоже не слишком большой, чтобы так тормозить причё только при первом обращении к странице за последние 5 - 7 минут. Посмотрел в SQL Profiler'е все запросы занимают немного времени. Но немногосмушает, то что если со времени (несколько минут) последнего запроса не выполнялось обращений к БД, то происходит Logout. Может здесь причина? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2006, 22:24 |
|
||
|
Почему так медленно?
|
|||
|---|---|---|---|
|
#18+
Logout происходит, если я правильно помню, потому, что соединение с БД возвращается в Connection Pool, т.е. это как раз-таки нормально. Посмотрите вот на что: когда у вас наблюдается тормоза, запущен ли на сервере процесс csc.exe? Если да, то это ваше приложение компилируется на сервере. Я бы предложил вот какой метод: 1. Попробуйте вот такую штуку написать в web.config, в раздел <system.web>: <compilation defaultLanguage="c#" debug="false" batch="true"> </compilation> (на локальном сервере для отладки debug="false" замените на "true"). 2. Также проверьте, сколько памяти занимает Ваше приложение - и не установлены в Application Pool и в machine.config параметры, которые бы его перегружали при достижении некоего объема занимаемой памяти, который ниже :) 3. Вставьте trace-операции в ваши страницы под вопросом, и тогда можно будет посмотреть точно, какая из операций (обращение к БД или же размещение результатов на странице) занимает больше всего времени на WEB сервере. Если у вас на SQL сервере ничего экстраординарного не происходит, то значит проблема либо в сети, либо в WEB сервере, либо в приложении. 4. Насчет ViewState я бы с плеча не рубил. Что значит "не очень большой"? Сколько по сравнению с размером страницы? 5. По поводу сессии: она локальная (in process) или нет (out of process)? Если нет, то куда сессия кладется? Если в ASPState базу на SQL сервере, то она тормозная и неэффективная. Гляньте SQL Profiler-ом, что в ней происходит - обычно в ней полно locks и операции с ASPState блокируют всех кому не лень. 6. Ну и наконец, проверьте конфигурацию Ваших сетевых карт. Поставьте вместо AutoDetect - Full Duplex явно. Посмотрите, установлены ли последние драйвера и так далее. От производительности сетки очень много зависит. Пишите о результатах. -- Дмитрий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2006, 23:35 |
|
||
|
Почему так медленно?
|
|||
|---|---|---|---|
|
#18+
Да, забыл сказать: На SQL Server-е отрубите в Server Network Utility все протоколы, кроме tcp. То же самое сделайте на web сервере, если там установлены SQL Client tools. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2006, 23:38 |
|
||
|
Почему так медленно?
|
|||
|---|---|---|---|
|
#18+
Вот trace: aspx.page Begin PreInit aspx.page End PreInit 0,0133614747125682 0,013361 aspx.page Begin Init 0,0133891318589374 0,000028 aspx.page End Init 0,0134581350423029 0,000069 aspx.page Begin InitComplete 0,0134793667910307 0,000021 aspx.page End InitComplete 0,013499760444414 0,000020 aspx.page Begin PreLoad 0,0135229477489457 0,000023 aspx.page End PreLoad 0,0135726747393873 0,000050 aspx.page Begin Load 0,0135933477578854 0,000021 aspx.page End Load 12,0524977336505 12,038904 aspx.page Begin LoadComplete 12,0525332130201 0,000035 aspx.page End LoadComplete 12,0525541654037 0,000021 aspx.page Begin PreRender 12,0525740003269 0,000020 aspx.page End PreRender 12,0527656447956 0,000192 aspx.page Begin PreRenderComplete 12,0527891114653 0,000023 aspx.page End PreRenderComplete 12,0528086670233 0,000020 aspx.page Begin SaveState 12,0613388014398 0,008530 aspx.page End SaveState 12,0615885538525 0,000250 aspx.page Begin SaveStateComplete 12,0616131379826 0,000025 aspx.page End SaveStateComplete 12,0616338110011 0,000021 aspx.page Begin Render 12,0616533665592 0,000020 aspx.page End Render 12,0678334816296 0,006180 ViewState в несколько раз меньше размера страницы: <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUINzk5NDU0MzEPZBYCAgMPZBYCAhcPPCsADQ EADxYGHgtfIURhdGFCb3VuZGceCVBhZ2VDb3VudAIBHgtfIUl0ZW1 Db3VudAIEZBYCZg9kFgoCAQ9kFgQCAw9kFgICAQ8PFgIeBFRleHQ FBzEzMzcsNzZkZAIED2QWAgIBDw8WAh4PQ29tbWFuZEFyZ3VtZW 50BQI1NRYEHgVwcmljZQUHMTMzNyw3Nh4CaWQFAjU1ZAICD2Q WBAIDD2QWAgIBDw8WAh8DBQU4MzYsMWRkAgQPZBYCAgEPD xYCHwQFAjU0FgQfBQUFODM2LDEfBgUCNTRkAgMPZBYEAgMPZ BYCAgEPDxYCHwMFBzE3NTUsODFkZAIED2QWAgIBDw8WAh8EB QI1MxYEHwUFBzE3NTUsODEfBgUCNTNkAgQPZBYEAgMPZBYCA gEPDxYCHwMFBzE2MTYsNDZkZAIED2QWAgIBDw8WAh8EBQI1M hYEHwUFBzE2MTYsNDYfBgUCNTJkAgUPDxYCHgdWaXNpYmxlaGR kGAIFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYEBRNHcml kVmlldzEkY3RsMDIkYnV5BRNHcmlkVmlldzEkY3RsMDMkYnV5BRNH cmlkVmlldzEkY3RsMDQkYnV5BRNHcmlkVmlldzEkY3RsMDUkYnV5BQ lHcmlkVmlldzEPZ2Rx0+1ri442Pk9MwuJ2tIuu7iG5AQ==" /> По поводу batch="true" это вроде по умолчанию ставится. На сетевых поставил явно Full Duplex. Оставил протокол только TCP. На счёт сессии не понял. Что значит in process, out of process. Можно пояснить? Я делаю так: Session["var1"]=1 Короче, я сделал 1. изменения в настройках сетевой карточки 2. убрал все остальные протоколы, кроме TCP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 10:19 |
|
||
|
Почему так медленно?
|
|||
|---|---|---|---|
|
#18+
Ты лучше покажи, что у тебя в "OnLoad" страницы той происходит. How can men die better than facing fearful odds, For the ashes of their fathers and the temples of their gods? | Мой Brainbench | BookReader 1.1 | Wallpaper Cycler | ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 12:02 |
|
||
|
Почему так медленно?
|
|||
|---|---|---|---|
|
#18+
protected void Page_Load(object sender, EventArgs e) { try { if (File.Exists(@"D:\Tab\Data\dolar.txt")) { StreamReader rd = new StreamReader(@"D:\Tab\Data\dolar.txt"); dolar= Convert.ToDouble(rd.ReadLine().Trim()); rd.Close(); rd.Dispose(); } strNum = Convert.ToInt32(Request.QueryString["page"]); idprod = Convert.ToInt32(Request.QueryString["idprod"]); if (strNum != 0) { idm = Convert.ToInt32(Request.QueryString["idm"]); } else { Label1.Visible = true; idm = 0; } } catch { Response.Redirect("http://site.ru/Catalog/Default.aspx"); } if (Context.User.Identity.Name.Length!=0) { Label10.Text += "<b>" + Server.HtmlEncode(Context.User.Identity.Name).Replace("&", "&") +"</b></center>"; Label8.Visible = false; Label9.Visible = false; Label10.Visible = Visible; TextBox1.Visible = false; TextBox2.Visible = false; Button1.Visible = false; Button2.Visible = true; } str = ConfigurationSettings.AppSettings["Constr"]; Add();//Метод, который делает два элемента Label и ImageButton видимыми if (!IsPostBack) Bind();/*Здесь, происходит чтение из БДи связывание с GridView и DataList, * чтение происходит путём выполнения хранимых процедур, * причём одна из организует постраничный вывод(создаётся промежуточная таблица с полем identity) */ Просто интересно что, если обращаться к странице каждые 2 минуты, то тормозов нет, всё летает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 12:18 |
|
||
|
Почему так медленно?
|
|||
|---|---|---|---|
|
#18+
Попробуй между строчками кода, поставить счетчик производительности. Тогда можно будет узнать, где самая долгая задержка происходит.---------------------------------------- Knowledge is P...O...w...E...R! My site ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 13:57 |
|
||
|
Почему так медленно?
|
|||
|---|---|---|---|
|
#18+
Bind();/*Здесь, происходит чтение из БДи связывание с GridView и DataList, * чтение происходит путём выполнения хранимых процедур, * причём одна из организует постраничный вывод(создаётся промежуточная таблица с полем identity) */ А нельзя поле identity хранить сразу в таблице? Если таблица большая - это может долго выполняться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 14:58 |
|
||
|
Почему так медленно?
|
|||
|---|---|---|---|
|
#18+
Так вы же сказали что запросы быстро выполняются!---------------------------------------- Knowledge is P...O...w...E...R! My site ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2006, 15:17 |
|
||
|
Почему так медленно?
|
|||
|---|---|---|---|
|
#18+
* причём одна из организует постраничный вывод(создаётся промежуточная таблица с полем identity) */ Давайте разбираться по-порядку :) 1. Выше было предложение вставить Trace.WriteLine() операции в Page_Load и внутри Bind() чтобы посмотреть, что долше всего занимает. Нужно определить точно, где происходят задержки - на SQL Server или в ASP.NET. Пока такой информации нету. 2. Если промежуточная таблица - временная #(локальная) или ##(глобальная), то она будет создаваться в tempdb, что ни есть хорошо. 3. Что Вы делаете с SQL Connection, если Вам нужно лазить в промежуточную таблицу (если конечно она в tempdb)? Вы, надеюсь, ее не держите в сессии? Как вообще организована промежуточная таблица? Как в ней разделяются результаты работы нескольких пользователей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2006, 19:33 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=33891027&tid=1391055]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 387ms |

| 0 / 0 |
