Веб-сайт ASP.NET не отвечает при длительной обработке - PullRequest
1 голос
/ 11 июня 2010

Когда мое приложение сталкивается с длительным процессом, то есть извлекает запрос (ВЫБЕРИТЕ a, b, c ОТ d) Этот запрос должен быть выполнен в MSSQL Management Studio в течение 10 секунд, но когда приложение ASP.NET пытаетсяполучить его, он отказывается возвращать любой ответ на любые другие запросы, сделанные на этом сервере.

Я размещаю свое приложение на VPS Server с хорошими спецификациями, и я даю этот пример (ВЫБЕРИТЕ a, b, cОТ d) просто чтобы сообщить вам о проблеме, это может быть любой процесс, возможно, обработка фильма или даже выборка некоторых данных через внешний API, который испытывает некоторое замедление, или что-то подобное.

Любая помощь или предложениябудет высоко ценится.

Ответы [ 2 ]

1 голос
/ 11 июня 2010

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

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

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

  2. Вы можетеиспользуйте потоки для запуска paraller со страницей, создания потока и освобождения страницы, а затем сделайте некоторое обновление, чтобы получить результаты ... или сделайте любые другие трюки потоков, чтобы освободить пул от обработки.

  3. Вы можете оптимизировать свой sql 10 секунд, чтобы запустить что-то слишком много времени.В моих программах единственная маршрутизация, которая требует этого времени, - это некоторые статистические вычисления.Я заставляю их работать в фоновом режиме, кэширую результаты, а затем просто показываю результаты, когда они запрашивают.

Надеюсь, это поможет вам.

0 голосов
/ 11 июня 2010

Я настоятельно рекомендую вам ознакомиться с Sql Profiler, который поставляется с Sql Server Studio.

Запустите его и посмотрите, что идет на / с вашего сервера sql и как долго.

Вы получаете какие-либо исключения назад или просто время ожидания?

Вы можете пройти через код?

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

...