Наше веб-приложение в интрасети ведет себя очень странно. Очень часто обратная отправка (asp.net) для сохранения ввода заканчивается бездействием. Примерно через месяц периодического устранения неполадок я наконец-то смог сравнить заголовки HTTP-запроса и ответа.
По сути, у меня есть 2 сеанса браузера, один из которых запрашивает напрямую веб-сервер, а другой - через URL-адрес балансировщика нагрузки. Одним из различий между двумя ответами был заголовок даты. Версия, пришедшая из LB, имеет заголовок Date, который находится на 6 минутах в будущем. Другое отличие - Persistent-auth: ответ LB включен, а прямой ответ выключен.
Я не администратор сети, поэтому не могу ковыряться. У меня сложилось впечатление, что http-заголовок создается веб-сервером, а не балансировщиком нагрузки. Это вообще допустимый сценарий? Что я должен попросить моего администратора искать?
Обычно сервер устанавливает заголовок Date, а не балансировщик нагрузки. Однако можно установить заголовки с балансировщик нагрузки. В частности, это может делать кэширующий балансировщик нагрузки, поскольку согласно RFC 2616 Заголовок Date является частью определения возраста (date_value извлекается из заголовка Date):
Учитывая, что у нас есть два независимых способа вычисления возраста ответа на момент его получения, мы можем объединить их как
corrected_received_age = max(now - date_value, age_value)
Поэтому я рекомендую тесно сотрудничать со своими администраторами, чтобы лучше понять архитектуру приложения. Вместе выясните, какое кеширование может происходить, какой тип балансировщика нагрузки вы используете, и, конечно же, убедитесь, что для всех серверов в конвейере точно установлено время.