При отправке большого файла POST через ARR время ожидания запроса истекает через 120 секунд. Клиент получает код ошибки 502 Bad Gateway
. Я настроил «тайм-аут прокси» для веб-фермы равным 600 секундам. Я также настроил Connection time-out
из Default Web Site
быть 600 секунд. Сервер ARR перезапущен.
Следующее взято из файла журнала на сервере ARR:
2015-05-07 13:25:16 192.168.87.155 POST /Redacted/Import/RedactedImport20150507_152313.csv X-ARR-CACHE-HIT=0&X-ARR-LOG-ID=253daa4a-8372-405a-8efd-21ebbc38353f 80 - 192.168.87.198 - redacted.local 502 3 64 120436
из applicationHost.config:
<webFarm name="redacted.local" enabled="true">
<server address="redacted.local" enabled="true" />
<applicationRequestRouting>
<healthCheck url="http://redacted.local/redacted.svc" liveTrafficFailureCodes="400-" />
<protocol timeout="00:10:00" />
</applicationRequestRouting>
</webFarm>
Задний план:
Я создаю PoC для использования ARR для достижения балансировки нагрузки и высокой доступности для наших серверных служб, которые в основном представляют собой WCF (базовый HTTP) и REST.
Одна из служб (REST) используется для получения большого (ish) файла пару раз в день из пакетного задания. Служба REST не возвращается, пока обработка файла не будет завершена (что может занять 5 минут), поскольку клиентскому приложению необходимо знать, когда обработка завершена (далее следуют дополнительные шаги, которые зависят от первого).
В моем случае я решил проблему, изменив тайм-аут прокси
Эти шаги предназначены для IIS v7.
У нас была аналогичная проблема, которая была связана с настройкой MTU по умолчанию на сетевой карте, он был установлен на 1514 вместо 1500, что вызывало проблемы только с большими сообщениями.
Отвечая на свой вопрос, как я, наконец, понял.
Я добавил это в applicationHost.config
под configuration/system.applicationHost
:
<webLimits connectionTimeout="00:10:00" minBytesPerSecond="0" />
Но даже после сохранения и нажатия Restart
под Manage Server
в диспетчере IIS он все еще отвечал 502
через две минуты.
Однако сегодня, когда я установил некоторые функции IIS (отслеживание неудачных запросов), я перезапустил службу IIS. W3SVC
и служба веб-управления WMSvc
, и вдруг 502
остановился.