Кажется, что процесс приостановлен, но только на серверах ARR (с балансировкой нагрузки) - PullRequest
0 голосов
/ 03 октября 2018

Я попытаюсь описать мою проблему:

Приложение 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>

Я не уверен, что еще можно попробовать.Есть предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...