Я работаю с коммерческим приложением, работающим на XP с использованием IIS 5.1. Периодически приложение возвращает ошибку IIS «Слишком много людей обращаются к веб-сайту в это время». Это вызвано тем, что Microsoft искусственно ограничивает количество подключений (10) в IIS 5.1 под Windows XP, но в этом случае действительно есть только один пользователь (хотя одновременно открываются несколько вкладок). Microsoft предлагает уменьшить проблему, отключив HTTP Keep-Alives для этого конкретного веб-сайта:
http://support.microsoft.com/kb/262635
Если вы используете IIS 5.0 в Windows 2000 Professional или IIS 5.1 в Microsoft Windows XP Professional, отключите HTTP-протоколы активности в свойствах веб-сайта. При этом по-прежнему существует ограничение в 10 одновременных подключений, но IIS не поддерживает подключения для неактивных пользователей.
Я могу это сделать; однако меня беспокоит снижение производительности. Однако я также заметил, что IE8, похоже, обрабатывает это иначе, чем IE7. По умолчанию IE6 и IE7 используют 2 постоянных соединения, а IE8 - 6. Возможно, в этом случае IE8 сам генерирует несколько соединений, пытаясь быть быстрее, но эти дополнительные соединения подавляют искусственно ограниченный IIS 5.1 на XP? Предполагая, что это так, есть ли параметр Internet Explorer, параметр реестра или политика, которые я могу установить, чтобы заставить IE8 вести себя как IE7 в отношении постоянных подключений? Я бы не стал устанавливать это для всех пользователей, но для небольшого числа пользователей, которые использовали это приложение, это могло бы решить их временную проблему, пока приложение не будет повторно запущено на Windows Server 2008. Спасибо.
Отключение keep-alive соединений, безусловно, уменьшит проблему, остановив браузеры, удерживающие соединения открытыми в течение некоторого времени после их последнего доступа.
Однако это, конечно, не решит проблему. Если у вас есть только два пользователя, использующие IE8, открывающие страницу с множеством подобъектов (изображения, файлы сценариев, файлы css), то вы достигнете ограничения в 10 подключений. В зависимости от вашего приложения и количества пользователей это может быть маловероятно, но чем больше у вас одновременных пользовательских сеансов, тем больше вероятность, что он перейдет на вариант Windows, который предназначен для использования на сервере (и, следовательно, не отключает себя искусственно) это то, что вы должны сделать, как только это станет практически возможным.
Отключение поддержки активности не окажет существенного влияния на производительность, если ваши пользователи являются локальными или используют много подключений. Поддерживаемые соединения уменьшают эффект сетевой задержки за счет уменьшения количества подтверждений TCP, но если ваши клиенты являются локальными, каждое соединение в любом случае не займет много времени для инициации. Если ваши пользователи находятся довольно далеко от приложения и, следовательно, между ними и приложением существует значительная задержка в оба конца, то разница будет более заметной - время прохождения через Атлантику в 100 мс будет иметь гораздо больший эффект. по производительности с выключенными keep-alives, чем время двусторонней передачи <1 мс между хостами в одной сети.