OpenFire, HTTP-BIND и производительность - PullRequest
1 голос
/ 21 ноября 2011

Я пытаюсь запустить сервер openfire и настроить клиент strophe.js для подключения к нему. Меня беспокоит то, что использование http-bind может быть дорогостоящим с точки зрения производительности по сравнению с прямым подключением к XMPP.

Может кто-нибудь сказать мне, имеет ли значение мое беспокойство или нет? И если да, то в какой степени?

Альтернативой может быть использование флэш-прокси для всего взаимодействия с OpenFire.

Спасибо

Ответы [ 4 ]

3 голосов
/ 09 декабря 2011

BOSH более многословен, чем обычный XMPP, особенно в режиме ожидания. Свободное BOSH-соединение может составлять около 2 HTTP-запросов в минуту, в то время как обычное соединение может бездействовать часами или даже днями, не отправляя ни одного пакета (теоретически на практике у вас будут пинг и сообщения поддержки активности для борьбы с NAT и сломанными брандмауэрами) .

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

1 голос
/ 20 декабря 2011

мы использовали Openfire и BOSH с 400 одновременными пользователями в одном канале MUC. Мы заметили, что Openfire теряет память. У нас было около 1,5-2 ГБ памяти, и мы постоянно получали исключения из памяти. Также BOSH-реализация Openfire довольно плохая. Затем мы переключились на Пенджаб , который был лучше, но не смог решить проблему открытого огня.

Сейчас мы используем ejabberd с их встроенной реализацией http-bind, и она хорошо масштабируется. Нагрузка на сервер, на котором запущен ejabberd, составляет почти 0.

В настоящий момент мы сталкиваемся с проблемой, что наши 5 веб-серверов, которые мы используем для обработки чата, иногда перегружаются примерно у 200 подключенных пользователей. Я пытаюсь использовать веб-сокеты сейчас, но кажется, что это еще не работает. Возможно, перенаправление http-bind не через правило перезаписи Apache, а непосредственно на loadbalancer / proxy решит проблему, но я не смог найти способ, как это сделать.

Надеюсь, это поможет.

1 голос
/ 11 декабря 2011

Основы:

Socket - zero overhead.

HTTP - requests even on IDLE session.

Я сомневаюсь, что у вас будет сразу 1 млн пользователей, но если вы к этому стремитесь, тогда протокол без коннекта, такой как http, будет намного лучше, поскольку я неубедитесь, что любая ОС поддерживает такой тип подключенного сокета.

Кроме того, вы можете связать свои OpenFires вместе, сформировать ферму, и у вас будет хорошая масштабируемость там.

0 голосов
/ 22 ноября 2011

В итоге я использовал node.js и http://code.google.com/p/node-xmpp-bosh, так как столкнулся с некоторыми трудностями при прямом подключении к Openfire через BOSH.

У меня есть рабочий сайт, на котором запущен node.js, настроенный для проксиBOSH запрашивает, и это работает как шарм (около 50 одновременных пользователей).Единственный недостаток на данный момент: в консоли администратора Openfire вы не увидите фактический IP-адрес подключенных клиентов, только адрес локального сервера будет отображаться, когда Openfire получает соединение с сервера node.js.

...