Диагностика "Превышен тайм-аут запроса" - PullRequest
25 голосов
/ 14 января 2009

Здесь, в StackOverflow, мы видим несколько исключений «Время ожидания запроса» каждый день.

Факты:

  • Время ожидания по умолчанию - 90 секунд
  • Происходит только на сообщениях
  • Отправленные данные являются текстовыми, обычно небольшими (<1 КБ), но могут варьироваться до нескольких КБ </li>
  • Данные формы не регистрируются в переменных сервера
  • Клиентские UA разнообразны: IE5.5 - 7, Firefox 3.0.5, iPhone, Chrome
  • Места расположения клиентов разнообразны: Великобритания, Франция, США - NC, OH, NE, IN

Мы проверили тайм-аут на основе сервера (т. Е. С использованием Thread.Sleep) и все переменные формы правильно записаны в журнале исключений - это заставляет нас думать, что у клиента возникают проблемы с отправкой запроса в отведенное время.

Любые мысли о том, как отловить / отладить это условие, очень приветствуются!

Ответы [ 7 ]

12 голосов
/ 02 апреля 2009

У меня та же проблема на наших производственных серверах, которые используют небольшой веб-сервис AJAX. После выполнения перехвата пакетов за пределами нашего брандмауэра мы обнаружили, что POST для службы идет в двух сегментах TCP, а второй сегмент до нас так и не дошел. (первый пакет содержит только заголовки, второй отсутствующий пакет должен быть телом json). Таким образом, в основном IIS просто сидит в ожидании остальной части POST. По истечении заданного времени ожидания сервер отправляет клиенту пакет RST и регистрирует ошибку «Время ожидания истекло» - это правильное поведение.

Мы пытаемся получить клиентское репродукцию без особой удачи, но в нашем случае это, по-видимому, полностью связано с сетью (или, возможно, с каким-то «программным обеспечением» безопасности, которому не нравится содержание сообщения).

9 голосов
/ 14 января 2009

Если вы используете IIS 7, вы можете использовать Отслеживание невыполненных запросов . Я фактически не использовал это для тайм-аутов, я главным образом настроил это, чтобы захватить только определенные коды ошибок http. Но я знаю, что вы можете заставить его сбрасывать следы любого запроса, который занимает больше X времени.

3 голосов
/ 03 февраля 2013

В этой статье описывается, как поймать это с помощью windbg:

http://blogs.msdn.com/b/asiatech/archive/2012/06/21/how-to-troubleshoot-httpexception-request-timed-out-asp-net-4-0-64-bit.aspx

3 голосов
/ 14 января 2009

Вы пробовали отправлять сообщения вручную через telnet и просто не завершали POST. Мне было бы интересно посмотреть, не могли бы вы повторить поведение, которое вы видите. Учитывая характер сайта, я не удивлюсь, если вы намеренно получаете несколько искаженных сообщений POST, чтобы попытаться взломать систему.

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

2 голосов
/ 14 января 2009

Мы часто видели их с нашим веб-клиентом с очень высоким трафиком - интересно, связано ли это. Предположительно происходило то, что HttpWebRequest (я предполагаю, что у вас проблемы с HttpWebResponse? Может, у них такие же проблемы) использует некоторый пул резких потоков под оболочками, , даже когда ваши запросы синхронны. Every время от времени что-то блокировалось, потому что какой-то другой объект .NET, находящийся выше в стеке, использовал тот же системный пул потоков, и один из них приводил к истощению другого, что в итоге приводило к тайм-ауту. Я думаю, что проблема лучше описана здесь: http://www.deez.info/sengelha/2005/03/03/beware-threadpools-and-httpwebrequest/

1 голос
/ 14 января 2009

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

0 голосов
/ 17 февраля 2009

Мы сталкиваемся с той же проблемой «Тайм-аут запроса» с нашими веб-серверами после перехода с IIS6 на IIS7. Я считаю, что проблема связана с IIS7. Я предполагаю, что эти ошибки были проглочены или проигнорированы далее по цепочке обработки в IIS6, прежде чем запрос был передан ASP.Net для обработки. Сегодня я включаю отслеживание невыполненных запросов, чтобы узнать, смогу ли я перехватить дополнительную информацию об этой проблеме. Пока что кажется, что ваше объяснение причин на стороне клиента кажется наиболее обоснованным.

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