У нас есть клиент, которому необходимо получать интерактивные сообщения с сервера, от клиентов, которые распространяются по всему миру за всеми видами брандмауэров со всеми закрытыми портами. Единственное, на что мы можем положиться, это HTTP-порт 80 (и HTTPS 443).Проблема производительности IIS, пытающаяся реализовать XMPP-подобный протокол
Дизайн в основном моделируется после XMPP (протокол Jabber) с использованием нашего клиента и IIS. Клиент отправляет запросы GET в обработчик .NET; обработчик удерживает запрос открытым для поиска сообщений. Если какие-либо сообщения поступают, они немедленно отправляются клиенту; если нет, то после таймаута соединение закрывается с ответом «нет данных». Клиент немедленно открывает связь.
Ну, теоретически.
Что происходит на первый взгляд, IIS не может обрабатывать более 100 одновременных запросов - остальные все находятся в очереди, и между «подключенными» и IIS может быть несколько минутного разрыва, признавая, что клиент вызвал. Во-вторых, примерно в половине случаев, когда клиент уходит без ответа с сервера (время ожидания клиента на пять минут больше, чем у сервера).
POST всегда работает. Другие данные, обслуживаемые на одном и том же веб-сервере, работают. Веб-службы на одном сервере работают. Это готовая установка на сервере Windows 2K3.
Есть ли вариант конфигурации, который нам не хватает, или есть что-то еще, на что я должен обратить внимание?
Спасибо.
«XMPP никогда не был предназначен для высокопроизводительных приложений». Я не знаю, что вы подразумеваете под «высокой производительностью», но он был разработан для общения в чате и делает это очень хорошо, о чем спрашивает OP. Например, ejabberd может обрабатывать сотни тысяч одновременных запросов. – 2011-01-21 16:33:38