powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Почему так медленно?
18 сообщений из 18, страница 1 из 1
Почему так медленно?
    #33886754
Limonad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иммется некоторый сайт.

На нём есть несколько страниц. Причём на некторых выдятся данные из БД.

При первом обращении к страницам, которые требуют срединения с БД, они грузятся долго. При следующей загрузке (с промежутком времени где-то 3 минуты) всё происходит быстро. Но по прошествии минут 5-7 время загрузки таких страниц, которые требуют соединения с БД, значительно увеличивается. В чём причина такого тормоза? Вроде пуллинг по умолчанию true, т.е.используются уже готовые подключения.

Примечания:
*БД - MS SQL 2000
**Обращения к БД происходит через хранимые процедуры.
***Данное явление не относится к страницам, не требующих соединения к БД.

Заранее спасибо.
...
Рейтинг: 0 / 0
Почему так медленно?
    #33886827
Фотография Lexis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какое время жизни соединения в пуле установлены в web.config?
...
Рейтинг: 0 / 0
Почему так медленно?
    #33886915
gaidar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите настройки сервера - когда происходит Recycle для Application Pool, такое вполне может быть, если "передергивается" пул приложения и все начинается заново.--
Гайдар Магдануров
E-Mail | Блог | Сайт

Difficult I do now, impossible will take a while...
...
Рейтинг: 0 / 0
Почему так медленно?
    #33887508
Limonad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>какое время жизни соединения в пуле установлены в web.config?

В web.config ничего не прописано, по умолчанию время жизни пула "0", т.е. подключение имеет максимальное время ожидания.

>Посмотрите настройки сервера - когда происходит Recycle для Application Pool, такое вполне может быть, если "передергивается" пул приложения и все начинается заново.
 
Тоже  всё по умолчанию 1740 мин, я вообще галочку убрал, ничего не поменялось.

Может ещё, что-нибудь посоветуете?
 
...
Рейтинг: 0 / 0
Почему так медленно?
    #33887811
Dimos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запустите SQL Profiler и посмотрите, на самом ли деле проблема в запросах к SQL Server-у? Может у Вас данные в сессии хранятся, например, out of process, и это дело долго занимает? Может ViewState здоровенный?

Короче, нужно сначала уточнить диагноз, а потом уже будем лечить.
...
Рейтинг: 0 / 0
Почему так медленно?
    #33887873
Limonad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Запустите SQL Profiler и посмотрите, на самом ли деле проблема в запросах к SQL Server-у? Может у Вас данные в сессии хранятся, например, out of process, и это дело долго занимает? Может ViewState здоровенный?
 
Данные в сесси хранятся. Но что-то мне кажется  это не корень проблемы. ViewState тоже не слишком большой, чтобы так тормозить причё только при первом обращении к странице за последние 5 - 7 минут. Посмотрел в SQL Profiler'е все запросы занимают немного времени. Но немногосмушает, то что если со времени (несколько минут)  последнего запроса не выполнялось обращений к БД, то происходит Logout. Может здесь причина?
 
...
Рейтинг: 0 / 0
Почему так медленно?
    #33887900
Dimos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 явно. Посмотрите, установлены ли последние драйвера и так далее. От производительности сетки очень много зависит.

Пишите о результатах.
-- Дмитрий
...
Рейтинг: 0 / 0
Почему так медленно?
    #33887901
Dimos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, забыл сказать:
На SQL Server-е отрубите в Server Network Utility все протоколы, кроме tcp.
То же самое сделайте на web сервере, если там установлены SQL Client tools.
...
Рейтинг: 0 / 0
Почему так медленно?
    #33891027
Limonad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот 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.
...
Рейтинг: 0 / 0
Почему так медленно?
    #33891396
Limonad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
up
...
Рейтинг: 0 / 0
Почему так медленно?
    #33891426
BlackTigerAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты лучше покажи, что у тебя в "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 |
...
Рейтинг: 0 / 0
Почему так медленно?
    #33891494
Limonad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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("&amp;", "&") +"</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 минуты, то тормозов нет, всё летает.
...
Рейтинг: 0 / 0
Почему так медленно?
    #33891829
Limonad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
up
...
Рейтинг: 0 / 0
Почему так медленно?
    #33891830
Limonad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
up
...
Рейтинг: 0 / 0
Почему так медленно?
    #33891868
C...R...a...S...H
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй между строчками кода, поставить счетчик производительности. Тогда можно будет узнать, где самая долгая задержка происходит.----------------------------------------
Knowledge is P...O...w...E...R!
My site
...
Рейтинг: 0 / 0
Почему так медленно?
    #33892152
Mashutka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bind();/*Здесь, происходит чтение из БДи связывание с GridView и DataList,
* чтение происходит путём выполнения хранимых процедур,
* причём одна из организует постраничный вывод(создаётся промежуточная таблица с полем identity)
*/

А нельзя поле identity хранить сразу в таблице? Если таблица большая - это может долго выполняться.
...
Рейтинг: 0 / 0
Почему так медленно?
    #33892247
C...R...a...S...H
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так вы же сказали что запросы быстро выполняются!----------------------------------------
Knowledge is P...O...w...E...R!
My site
...
Рейтинг: 0 / 0
Почему так медленно?
    #33895732
Dimos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
* причём одна из организует постраничный вывод(создаётся промежуточная таблица с полем identity)
*/

Давайте разбираться по-порядку :)
1. Выше было предложение вставить Trace.WriteLine() операции в Page_Load и внутри Bind() чтобы посмотреть, что долше всего занимает. Нужно определить точно, где происходят задержки - на SQL Server или в ASP.NET. Пока такой информации нету.
2. Если промежуточная таблица - временная #(локальная) или ##(глобальная), то она будет создаваться в tempdb, что ни есть хорошо.
3. Что Вы делаете с SQL Connection, если Вам нужно лазить в промежуточную таблицу (если конечно она в tempdb)? Вы, надеюсь, ее не держите в сессии? Как вообще организована промежуточная таблица? Как в ней разделяются результаты работы нескольких пользователей?
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Почему так медленно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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