優化openfire服務器提高xmpp 效率的15個方法(原創)

一、禁用原生xmpp搜索,使組織架構、人員數據本地化保存,並使客戶端數據同步服務器,下降原生xmpp搜索的iq消耗,由於搜索是im應用的頻繁操做;html

二、禁用roster花名冊、禁用presence包通信,企業im中的好友概念很是不必,使用發佈訂閱的方式替代狀態服務,見http://www.cnblogs.com/starcrm/p/5029231.html。並重寫狀態更新的廣播:PresenceUpdateHandler中的broadcastUpdate方法。java

若是想保留好友機制,建議把好友信息本地化保存,不要每次都從服務器拉取了。linux

三、禁用MUC的Password-Verification特性,它將形成客戶端開窗前的大量iq交互。改造Roles、 Affiliations、Disco 、Querying等交互,但muc消息通信機制能夠沿用。redis

四、頭像分離出vcard,在有頭像狀況下實在是太佔流量了,並且openfire的緩存基本都被vcard、roster佔了。頭像放雲裏,或者搞頭像服務,而且作客戶端同步。算法

五、避免爲每一種請求開發一個新iq,設計一個通用的處理iq,統一包裝並解析json,簡化業務處理。json

六、TLS鏈接使用更快的算法(用ECDHE RSA-2048代替RSA-4096,而不是DHE、RC4)windows

七、若是使用SCRAM-SHA-1算法,服務器將哈希密碼處理 (每次都發一樣的salt) ,能夠對 SaltedPassword 進行緩存, 將節省處理時間。緩存

八、自動更新管理須要改進,由於openfire設計的客戶端下載升級是經過自身的服務器進行,當大量客戶端同時下載時必定掛。服務器

九、嘗試用redis存儲緩存,讓of專一於一件事:消息處理。架構

十、離線信息存儲分庫,或者用redis存。

十一、不要用windows版的of,最大java內存難以大於1300MB,另外linux可更多的tcp鏈接。在linux下執行ulimit -n 100000設置爲10萬。

十二、保證你重寫AuthProvider的驗證返回必定要快,你會發現登陸時間至少提高1-2秒。

1三、將登陸驗證的9個round trip,減小到3個round trip,這裏很詳細

http://blog.csdn.net/linyu19872008/article/details/24022929?utm_source=tuicool&utm_medium=referral


1四、讀讀官方的優化方案:

http://www.igniterealtime.org/support/articles/openfire_optimization.jsp

1五、另外,增長消息回執機制,解決of4.0之前的自己機制形成的丟消息風險,不清楚前幾天新發布的of4.0對這個有沒有改進。

歡迎補充。

相關文章
相關標籤/搜索