Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
Доброго дня, Необходима Ваша помощь. Имеется несложный сайт на 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 позволял запускать параллельно несколько копий страницы с одинаковым параметром? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 02:43 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
Симптомы указывают, что сайт, похоже, реализован без асинхронных контроллеров. Поэтому будет полезным здесь внедрить асинхронность(ключевые слова - async и await; их использование) В качестве альтернативы - можно количество тредов, выделенных для этого сайта в IIS, увеличить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 12:22 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
Volochkova, возможно процедура делает блокировки во время своей работы так что каждая страница вынуждена ждать своей очереди. Попробуй выполнить процедуру из нескольких закладок в management studio. Если увидишь аналогичное выстраивание в очередь, то значит нужно процедуру исправлять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 12:31 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
Volochkova, не спец но что то читал про кеширование, наверное этот механизм синхронный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 12:41 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
PoninСимптомы указывают, что сайт, похоже, реализован без асинхронных контроллеров. Поэтому будет полезным здесь внедрить асинхронность(ключевые слова - async и await; их использование) Какой нах async и await, все 10 методов и так выполнятся в отдельных тредах. Изучай матчасть и асинхронную природу ASP.NET. Тут скорее причина в логике работы метода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 12:47 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
Volochkova, Session используется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 14:26 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
skyANA, хороший вопрос ++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 17:37 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
skyANA, Скорее всего нет. В коде ASP.NET открыть SQLConnection в DataTable получить результат, который показывается в gridView. Были даже попытки сделать асинхронные запросы, но результат оказался таким же, 2-3 процесса стартуют, остальные ждут завершения. В итоге "причина", кажется, нашлась. Взяв в руки C#, были сделаны 20 потоков, которые генерируют WebClient и открывают странички. Результат аналогичный. - 2-3 процесса стартуют, остальные ждут завершения. Стало грустно, а вот 20 потоков которые запускают отдельный IE и каждый 1 раз открывает страничку - показали, что процессы пошли все 20 почти одновременно. ( в профайлере MS SQL видно что все 20 потоков подключились, почти одновременно) Видимо необходимо время на запуск IE. Видимо это настройки какие то для WebClient, чтобы не убивали сайты одинаковыми запросами. Они и не дают более 2-3 одновременно тащить данные с сайта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 13:37 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
Volochkova, все дело в keep alive правильно сказали, чтобы решить задачу используй async/await и не слушай бред про «асинхронную природу ASP.NET» ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 15:16 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
hVosttVolochkova, все дело в keep alive правильно сказали, чтобы решить задачу используй async/await и не слушай бред про «асинхронную природу ASP.NET» Хватит нести дурь, возьми в руки Код: c# 1. и проверь. Тоже самое будет у автора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 15:37 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
Простите блондинку, не поняла про KeepAlive = false. Должно помочь открывать 20 закладок как 20 IE процессов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 16:14 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
Volochkova, на сервере для обработки каждого запроса выделяется поток из пула, но обращаясь к одному и тому же ресурсу потоки могут ожидать освобождения этого ресурса. вы бы дали больше информации о том, как получаете данные для грида, привели бы код странички, тогда можно было сказать точнее в чем причина. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 16:44 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
МСУ, я не знаю о какой там асинхронной природе асп.нет постоянно идёт речь, но факт остаётся фактом: использование async/await вкупе с использованием async-методов EF 6 меняет ситуацию в корне, поток запросов обрабатывается быстрее на порядки. а если еще организовать грамотное кеширование, то все просто летает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 16:46 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
hVostt, Код можно, но почему из браузера закладки открываются с ожиданием ресурсов, а 20 IE открываются без ожидания этих ресурсов. Раз так, точно проблема на сервере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 16:50 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
Volochkova, keep alive ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 16:51 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
hVostt, перестань вводить человека в заблуждение. Keep-alive используется чтобы сервер принудительно не закрывал соединение после ответа. Это дает возможость повторного использования уже открытого соединения для нового запроса. То что описывает Volochkova больше похоже на достижение лимита на подключения к одному домену. Все современные браузеры это делают чтобы не перегружать сервер слишком большим кол-во одновременных запросов. Но т.к. у нее запросы с одинаковыми параметрами ждут, а с разными выполняются, то значит проблема в серверном коде. Это нехватка рабочих потоков ASP.NET т.к. тогда поведение было бы одинаковым в обоих случаях. Следовательно проблема в коде страницы или в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 17:09 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, я не знаю о какой там асинхронной природе асп.нет постоянно идёт речь, но факт остаётся фактом: использование async/await вкупе с использованием async-методов EF 6 меняет ситуацию в корне, поток запросов обрабатывается быстрее на порядки. а если еще организовать грамотное кеширование, то все просто летает. Жесть... hVostt, сцуко, кончай хрень нести, какой них keep-alive, какой async, причем тут ef? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 17:14 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
bazile, я про это и говорю. потоки нужно освобождать как можно быстрее. проблему можно решить, отдав поток сразу же, получив задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 17:39 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
МСУ, незнай. но твоё «причина в логике работы метода» всё равно, что сказать о влиянии на работу кода какой-нибудь солнечной бури, т.е. ниачом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 17:41 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
Следовательно проблема в коде страницы или в БД. вы как сговорились. человек спрашивает в чем проблема, а вы «да, у тебя там проблема». хотите занять место капитана очевидность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 17:43 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, незнай. но твоё «причина в логике работы метода» всё равно, что сказать о влиянии на работу кода какой-нибудь солнечной бури, т.е. ниачом. Мля, я тебе дал пример реквеста: HttpWebRequest.KeepAlive Попроси автора сэмулировать вызовы не через WebClient, а через HttpWebRequest: тоже самое. Будет результат такой же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 17:47 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
hVosttя про это и говорю. потоки нужно освобождать как можно быстрее. проблему можно решить, отдав поток сразу же, получив задачу. Ты говоришь о двух вещах. О keep-alive, который тут никаким боком не уперся. И о async методах. Я в своем ответе оговорился. Вместо "Это нехватка рабочих потоков ASP.NET" нужно читать "Это НЕ нехватка рабочих потоков ASP.NET" (отправил просьбу модераторам исправить). Использование async подхода при работе с БД вещь хорошая и нужная, но в данном случае не похоже что проблема в нехватке рабочих потоков ASP.NET так что их досрочное освобождение ничего принципиально не изменит. Больше похоже на ожидание какого-то другого общего серверного ресурса. Я продолжаю считать что проблема на стороне БД, но возможно это сессия, как считает skyANA, или что-то еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 17:53 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
hVosttвы как сговорились. человек спрашивает в чем проблема, а вы «да, у тебя там проблема». хотите занять место капитана очевидность? Это подсказка куда смотреть и одновременно неявная просьба дать больше информации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 17:54 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
МСУ, хм.. ну может и так. хотя уместно было бы использовать фиддлер + браузер, а не вебклиент. причина пока так и неизвестна, чтобы узнать, что там за «проблема в коде», нужен этот самый код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 17:55 |
|
||
|
Параллельное открытие станицы
|
|||
|---|---|---|---|
|
#18+
bazile, есть подозрение, что один и тот же запрос к БД не может выполниться параллельно, а разные могут? или разные адреса QueryString позволяют обработать запрос параллельно, а одинаковые становятся в очередь (тогда это браузер виноват)? у меня сэмулировать проблему не получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2013, 17:59 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38340737&tid=1358247]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 418ms |

| 0 / 0 |
