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

Сотни подключений к серверу, просто открыв более 10 вкладок в IE8?

У нас есть частные форумы, на которых работает vBulletin, и мы получаем жалобы от клиентов, у которых возникают проблемы с доступом к ним, когда он открывает много вкладок. В последний раз, когда он звонил, было установлено, что наш хост автоматически заблокировал его IP-адрес. После открытия заявки в службу поддержки с хостом они разблокировали ее и сказали, что она была автоматически заблокирована для слишком большого количества подключений (я предполагаю одновременные подключения). По их словам, было 546 контактов.

Заказчик использует IE8 и утверждает, что после примерно 8–12 вкладок остальные «тайм-аут» - каждый раз. И, конечно же, ни на одном другом сайте нет этой проблемы.

ОБНОВЛЕНИЕ: оказывается, что Chrome (или Firefox, но я думаю, что это был Chrome) имеет ту же проблему. Но Opera вроде бы в порядке (я полагаю, из-за агрессивного кеширования).

При отсутствии прямого доступа к компьютерам на обоих концах, как я могу решить эту проблему?

Похоже, у вашего хоста есть какая-то настройка конфигурации анти-DOS, и ваш клиент запускает ее, открывая несколько вкладок одновременно. Я не удивлен, если одна вкладка, обращающаяся к вашей системе, открывает несколько одновременных HTTP-сеансов для параллельной загрузки файлов - поэтому, если у вашего клиента одновременно открываются 10 вкладок, как предлагают новые браузеры, то неудивительно, что вы клиент открывает 10 x несколько сеансов HTTP с вашим сервером.

IE 8 открывает до 6 одновременных сеансов для то же имя хоста.

Если у вас есть несколько имен хостов, настроенных как CNAME, указывающих на один и тот же IP-адрес (некоторые люди любят настраивать, например, «images.example.com», «css.example.com» и «forum.example.com», все они указывают к тому же фактическому хосту), вы можете усугубить проблему, усложнив IE, чтобы увидеть, что все они - одна и та же машина - по-видимому, сравнение выполняется хостом NAME, а не IP.

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

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

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

Это звучит как сложная проблема для решения, если вы не можете контролировать систему, устанавливающую соединения, или систему, ограничивающую соединения.

У gbroiles уже есть хороший ответ; Я добавляю ответ, так как он слишком длинный, чтобы уместиться в комментарии.

Все браузеры открывают несколько подключений, чтобы быстрее загрузить сайт. Каждое изображение, файл CSS, файл Javascript и т. Д., На которые есть ссылки в HTML, должны быть загружены, и это делается параллельно для ускорения работы. Ты можешь видеть сколько подключений открывает каждый браузер на вкладке Browserscope.org "Сеть".

Следует отметить еще 2 вещи:

  • Тенденция - никогда не открывать браузеры Больше подключений на хост.
  • Если соединение понижено до HTTP 1.0 (fx через промежуточный прокси), то большинство браузеров откроют дополнительные соединения. (Лучшая ссылка, которую я мог быстро найти это здесь; Стив Содерс больше пишет об этом в одной из своих книг.)

Фактически, если этот пользователь открывает 10+ вкладок на одном небольшом VPS-сервере, то он копит ресурсы. Я считаю совершенно разумным запретить это. Пользователь может раздражаться, но у него только одна пара глаз, поэтому он действительно не может утверждать, что взаимодействует со всеми 10+ страницами одновременно. Если сервер - это большая мощная машина с небольшой нагрузкой, то это, конечно, другое дело.

Вот что вы можете сделать:

  • Посмотри на свой Настройка HTTP Keepalive, и либо выключите его, либо установите меньшее значение тайм-аута (fx 5 секунд). Этого может быть недостаточно, но, по крайней мере, у вас не будет много открытых подключений.
  • Размещать статический контент (логотипы, CSS, JS, изображения, используемые для макета) на Сеть доставки контента (CDN). Небольшие учетные записи CDN сейчас дешевы, и вы бы направили весь HTTP-запрос на статический контент со своего собственного сервера.
  • Убедитесь, что ваш сервер отправляет правильные заголовки кеширования для статического содержимого. Как минимум, вы не хотите, чтобы пользователи загружали один и тот же логотип, CSS и многое другое снова и снова. Посмотри это отличный учебник по кешированию, и проверьте свои заголовки на webpagetest.org или REDbot.
  • Выяснить точно какая система занесен в черный список вашего клиента. Если это была служба защиты от DDoS от вашего интернет-провайдера, то, возможно, вы могли бы попросить исключить вас из защиты от DDoS (но, конечно, сначала подумайте об этом). Если бы это был программный брандмауэр на хосте, вы могли бы попросить увеличить лимиты.

Короче говоря, вы сможете исправить это вместе со своим партнером по хостингу, но сначала подумайте о потенциальных последствиях.

Поскольку вы не можете контролировать ни веб-браузер, ни сервер, у вас есть два варианта.

1) Возьмите под контроль сервер, поместив сайт на то, над чем у вас больше контроля. Это будет стоить вам времени и денег, но даст вам столько контроля, сколько вы готовы платить. Облачный сервер Rackspace, VPS от рекомендованного провайдера или просто качественный виртуальный хостинг здесь имеют большое значение. Вы также можете использовать размещенный форум, вы не получите особого контроля, но вы будете платить кому-то еще, чтобы он беспокоился о таких вещах.

2) Уменьшите количество выполняемых запросов. Вы можете сделать это, не имея нескольких файлов css или js, уменьшив количество изображений, используя спрайты css и, в конечном итоге, используя cdn (или просто отдельную машину) для размещения как можно большего количества внешних изображений, javascript и css. Вам нужно будет иметь возможность довольно жестко контролировать программное обеспечение вашего форума, и я никогда не работал с vBulletin, но это определенно должно быть выполнимо - по крайней мере, частично.