Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Параллельное открытие станицы / 25 сообщений из 32, страница 1 из 2
22.07.2013, 02:43
    #38338534
Volochkova
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
Доброго дня,

Необходима Ваша помощь.
Имеется несложный сайт на WIN2008R2 IIS7.5 , ASP.NET 4.0, данные берутся с ms sql express 2008 R2 сервера.
Имеется одна страничка, которая запускает процедуру на этом сервере, получает данные, выводит в грид.
Ничего сложного. Все работает, данные возвращаются быстро.
Но если пользователь запускает одновременно 10 окон/закладок в FF или опере с одной и той же страничкой, то закладки открываются последовательно.
1.2.3.....10.
Если в закладках для страницы указать разные параметры, то закладки откроются хаотично, какая то быстрее, какая-то медленнее.
Не знаю как правильно это назвать - получается что Web Server выполнил 10 запросов параллельно.

Т.е. 10 копий странички с разными параметрами - открываются параллельно, а вот 10 копий, с одним и тем же параметром, последовательно. Что необходимо сделать чтобы WEB Server позволял запускать параллельно несколько копий страницы с одинаковым параметром?

Спасибо.
...
Рейтинг: 0 / 0
22.07.2013, 12:22
    #38338813
Ponin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
Симптомы указывают, что сайт, похоже, реализован без асинхронных контроллеров.
Поэтому будет полезным здесь внедрить асинхронность(ключевые слова - async и await; их использование)
В качестве альтернативы - можно количество тредов, выделенных для этого сайта в IIS, увеличить.
...
Рейтинг: 0 / 0
22.07.2013, 12:31
    #38338841
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
Volochkova, возможно процедура делает блокировки во время своей работы так что каждая страница вынуждена ждать своей очереди. Попробуй выполнить процедуру из нескольких закладок в management studio. Если увидишь аналогичное выстраивание в очередь, то значит нужно процедуру исправлять.
...
Рейтинг: 0 / 0
22.07.2013, 12:41
    #38338858
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
Volochkova,

не спец но что то читал про кеширование, наверное этот механизм синхронный
...
Рейтинг: 0 / 0
22.07.2013, 12:47
    #38338873
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
PoninСимптомы указывают, что сайт, похоже, реализован без асинхронных контроллеров.
Поэтому будет полезным здесь внедрить асинхронность(ключевые слова - async и await; их использование)
Какой нах async и await, все 10 методов и так выполнятся в отдельных тредах. Изучай матчасть и асинхронную природу ASP.NET. Тут скорее причина в логике работы метода.
...
Рейтинг: 0 / 0
22.07.2013, 14:26
    #38339071
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
Volochkova, Session используется?
...
Рейтинг: 0 / 0
22.07.2013, 17:37
    #38339474
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
skyANA,
хороший вопрос ++
...
Рейтинг: 0 / 0
23.07.2013, 13:37
    #38340441
Volochkova
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
skyANA,
Скорее всего нет.
В коде ASP.NET
открыть SQLConnection
в DataTable получить результат, который показывается в gridView.


Были даже попытки сделать асинхронные запросы, но результат оказался таким же, 2-3 процесса стартуют, остальные ждут завершения.

В итоге "причина", кажется, нашлась.

Взяв в руки C#, были сделаны 20 потоков, которые генерируют WebClient и открывают странички. Результат аналогичный. - 2-3 процесса стартуют, остальные ждут завершения.

Стало грустно, а вот 20 потоков которые запускают отдельный IE и каждый 1 раз открывает страничку - показали, что процессы пошли все 20 почти одновременно. ( в профайлере MS SQL видно что все 20 потоков подключились, почти одновременно)
Видимо необходимо время на запуск IE.

Видимо это настройки какие то для WebClient, чтобы не убивали сайты одинаковыми запросами. Они и не дают более 2-3 одновременно тащить данные с сайта.
...
Рейтинг: 0 / 0
23.07.2013, 15:16
    #38340674
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
Volochkova,

все дело в keep alive
правильно сказали, чтобы решить задачу используй async/await и не слушай бред про «асинхронную природу ASP.NET»
...
Рейтинг: 0 / 0
23.07.2013, 15:37
    #38340737
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
hVosttVolochkova,

все дело в keep alive
правильно сказали, чтобы решить задачу используй async/await и не слушай бред про «асинхронную природу ASP.NET»

Хватит нести дурь, возьми в руки

Код: c#
1.
HttpWebRequest.KeepAlive = false;



и проверь. Тоже самое будет у автора.
...
Рейтинг: 0 / 0
23.07.2013, 16:14
    #38340828
Volochkova
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
Простите блондинку, не поняла про KeepAlive = false.

Должно помочь открывать 20 закладок как 20 IE процессов?
...
Рейтинг: 0 / 0
23.07.2013, 16:44
    #38340898
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
Volochkova,

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

вы бы дали больше информации о том, как получаете данные для грида, привели бы код странички, тогда можно было сказать точнее в чем причина.
...
Рейтинг: 0 / 0
23.07.2013, 16:46
    #38340904
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
МСУ,

я не знаю о какой там асинхронной природе асп.нет постоянно идёт речь, но факт остаётся фактом: использование async/await вкупе с использованием async-методов EF 6 меняет ситуацию в корне, поток запросов обрабатывается быстрее на порядки. а если еще организовать грамотное кеширование, то все просто летает.
...
Рейтинг: 0 / 0
23.07.2013, 16:50
    #38340919
Volochkova
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
hVostt,

Код можно, но почему из браузера закладки открываются с ожиданием ресурсов,
а 20 IE открываются без ожидания этих ресурсов.

Раз так, точно проблема на сервере?
...
Рейтинг: 0 / 0
23.07.2013, 16:51
    #38340922
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
Volochkova,

keep alive
...
Рейтинг: 0 / 0
23.07.2013, 17:09
    #38340953
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
hVostt, перестань вводить человека в заблуждение. Keep-alive используется чтобы сервер принудительно не закрывал соединение после ответа. Это дает возможость повторного использования уже открытого соединения для нового запроса. То что описывает Volochkova больше похоже на достижение лимита на подключения к одному домену. Все современные браузеры это делают чтобы не перегружать сервер слишком большим кол-во одновременных запросов. Но т.к. у нее запросы с одинаковыми параметрами ждут, а с разными выполняются, то значит проблема в серверном коде. Это нехватка рабочих потоков ASP.NET т.к. тогда поведение было бы одинаковым в обоих случаях. Следовательно проблема в коде страницы или в БД.
...
Рейтинг: 0 / 0
23.07.2013, 17:14
    #38340971
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
hVosttМСУ,

я не знаю о какой там асинхронной природе асп.нет постоянно идёт речь, но факт остаётся фактом: использование async/await вкупе с использованием async-методов EF 6 меняет ситуацию в корне, поток запросов обрабатывается быстрее на порядки. а если еще организовать грамотное кеширование, то все просто летает.
Жесть...

hVostt, сцуко, кончай хрень нести, какой них keep-alive, какой async, причем тут ef?
...
Рейтинг: 0 / 0
23.07.2013, 17:39
    #38341039
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
bazile,

я про это и говорю. потоки нужно освобождать как можно быстрее. проблему можно решить, отдав поток сразу же, получив задачу.
...
Рейтинг: 0 / 0
23.07.2013, 17:41
    #38341044
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
МСУ,

незнай. но твоё «причина в логике работы метода» всё равно, что сказать о влиянии на работу кода какой-нибудь солнечной бури, т.е. ниачом.
...
Рейтинг: 0 / 0
23.07.2013, 17:43
    #38341048
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
Следовательно проблема в коде страницы или в БД.

вы как сговорились. человек спрашивает в чем проблема, а вы «да, у тебя там проблема». хотите занять место капитана очевидность?
...
Рейтинг: 0 / 0
23.07.2013, 17:47
    #38341057
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
hVosttМСУ,

незнай. но твоё «причина в логике работы метода» всё равно, что сказать о влиянии на работу кода какой-нибудь солнечной бури, т.е. ниачом.

Мля, я тебе дал пример реквеста: HttpWebRequest.KeepAlive

Попроси автора сэмулировать вызовы не через WebClient, а через HttpWebRequest: тоже самое. Будет результат такой же.
...
Рейтинг: 0 / 0
23.07.2013, 17:53
    #38341073
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
hVosttя про это и говорю. потоки нужно освобождать как можно быстрее. проблему можно решить, отдав поток сразу же, получив задачу.
Ты говоришь о двух вещах. О keep-alive, который тут никаким боком не уперся. И о async методах. Я в своем ответе оговорился. Вместо "Это нехватка рабочих потоков ASP.NET" нужно читать "Это НЕ нехватка рабочих потоков ASP.NET" (отправил просьбу модераторам исправить). Использование async подхода при работе с БД вещь хорошая и нужная, но в данном случае не похоже что проблема в нехватке рабочих потоков ASP.NET так что их досрочное освобождение ничего принципиально не изменит. Больше похоже на ожидание какого-то другого общего серверного ресурса. Я продолжаю считать что проблема на стороне БД, но возможно это сессия, как считает skyANA, или что-то еще.
...
Рейтинг: 0 / 0
23.07.2013, 17:54
    #38341075
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
hVosttвы как сговорились. человек спрашивает в чем проблема, а вы «да, у тебя там проблема». хотите занять место капитана очевидность?
Это подсказка куда смотреть и одновременно неявная просьба дать больше информации.
...
Рейтинг: 0 / 0
23.07.2013, 17:55
    #38341077
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
МСУ,

хм.. ну может и так. хотя уместно было бы использовать фиддлер + браузер, а не вебклиент.
причина пока так и неизвестна, чтобы узнать, что там за «проблема в коде», нужен этот самый код.
...
Рейтинг: 0 / 0
23.07.2013, 17:59
    #38341085
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельное открытие станицы
bazile,

есть подозрение, что один и тот же запрос к БД не может выполниться параллельно, а разные могут? или разные адреса QueryString позволяют обработать запрос параллельно, а одинаковые становятся в очередь (тогда это браузер виноват)?

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


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