Я попытаюсь описать мою проблему:
Приложение ASP.NET WebForms.4.6.1.C #.
Страница, которая запускает этот процесс, обернута в единую панель обновления.
У нас есть процесс, который подключается к удаленному стороннему API, получает некоторые данные, зацикливается на данных и делаетеще несколько API перезванивают той же третьей стороне, чтобы получить больше данных по каждой позиции.Это супер дорогой процесс.Но это другая тема.(Мы пытаемся работать внутренне и с третьей стороной, чтобы выяснить, как сделать проще. Но я отвлекся.)
У нас есть четыре среды:
- Local Dev (неARR)
- Тестовый сервер (не ARR)
- Промежуточный сервер (ARR)
- Производство (ARR)
Процесс работает (хотя и медленно)) на всех серверах до определенного количества элементов (строк), извлеченных из начального вызова API.Когда мы достигаем где-то около 900, процесс останавливается, работая над подготовкой и производством.
Где я имею в виду, когда говорю «перестает работать» ...
Страница вращается некоторое время (чтоожидается) но потом примерно через 3 минуты ... он просто останавливается.Нет сообщений об ошибках на экране или в журналах БД или в DOM.Просто ... останавливается.Если мы обновим страницу (или посмотрим в журналах БД), то увидим, что она ОБРАБОТАЛА НЕКОТОРЫЕ из записей, но не все.
У этого есть все запахи проблемы тайм-аута.Но я просто не знаю, как это решить.Вот что я сделал на промежуточном сервере:
На рассматриваемой странице AsyncPostBackTimeout жестко задан как 36000 (60 минут)
На всех серверах с балансировкой нагрузки перейдите в web.config и добавьте httpRuntime
и установите executionTimeout
на 600
(или 10 минут).Проверено.Те же результаты.
На сервере ARR, в IIS, зашли в настройки прокси и проверили время ожидания.Для него уже установлено значение 900
(или 15 минут)
На всех серверах IIS установлен тайм-аут простоя пула приложений.Они установлены на 20 минут.
На всех серверах IIS: IIS -> Приложение, вызываемое правой кнопкой мыши -> Управление веб-сайтом -> Расширенные настройки -> Расширить ограничения -> Увеличить время подключения- до 900 секунд
Добавлено ValidateRequest="false"
в директиву страницы
Удалена панель обновления
К web.config добавили:
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="100000" />
</appSettings>
<system.web.extensions>
<scripting>
<scriptResourceHandler enableCompression="false" enableCaching="true"/>
</scripting>
</system.web.extensions>
Я не уверен, что еще можно попробовать.Есть предложения?