Назад | Перейти на главную страницу

Загрузка содержимого размером более 2000 байт из локальной сети зависает в браузере в Windows XP

У нас есть веб-приложение, которое работает под Tomcat в локальной сети. Наши клиенты испытывают странную проблему при использовании этого веб-приложения. Допустим, сервер Tomcat работает на хосте host1, а мы открываем URL-адрес веб-приложения в браузере на host2.

Любой браузер на хосте 2 начинает открывать страницу и загрузка контента "зависает" на несколько часов. Мы провели множество экспериментов и обнаружили, что любой контент размером более 2000 байт приводит к зависанию запроса браузера. Пробовал в Internet Explorer 8, Opera 12, Firefox. В то же время, если пользователь открывает сайт из Интернета, он работает. Открытие webapp с того же хоста 1, на котором запущен Tomcat, работает нормально. Локальная сеть организована с помощью коммутатора D-Link DGS-3120-48TC.

Дополнительная информация. В ходе экспериментов мы заметили, что XP Tweaker установлен на хостах. Сетевые настройки из этого инструмента:

Это может быть просто Открытие PMTU сломан где-то по пути1 , поэтому ваш сервер отправляет пакеты большего размера, чем тот, который может пройти на хосты клиентов. Попробуйте уменьшить MTU до 1300 и посмотрите, поможет ли это.

Сторона, на которой вы собираетесь изменить MTU, не имеет значения - уменьшение его на стороне клиента также должно уменьшить MSS, сообщаемый вашему серверу при настройке соединения TCP, поэтому он будет отправлять меньшие пакеты. Уменьшение его на стороне сервера сразу же разбило бы поток данных на более мелкие сегменты.

Если вы видите, что это помогает, не останавливайтесь на достигнутом, исправить PMTUD.


1 скорее всего, виноваты вы - если ICMP неправильно отфильтрован в конфигурации вашего брандмауэра, сообщения, требующие фрагментации ICMP, не доходят до стеков TCP вашего сервера, что эффективно нарушает PMTUD и приводит к пакетам, превышающим MTU, которые просто не могут чтобы обойти маршрутизаторы с MTU меньше MTU вашего сервера.