设为首页 收藏本站
查看: 761|回复: 0

[经验分享] Apache Mina 与 Openfire 性能

[复制链接]

尚未签到

发表于 2017-1-3 09:28:53 | 显示全部楼层 |阅读模式
  <转自http://rhythm-zju.blog.163.com/blog/static/31004200801504318444/>
  关注 Apache Mina已经有些时日了,也用 Mina 做了不少实验,尤其喜欢其简洁优雅的接口以及对 Spring 和 JMX 的良好集成。简而言之, Mina 是一个高性能的 Java 异步网络通讯框架。当前已有多个开源项目使用 Mina 构建底层 I/O 设施,或是正将底层 I/O 设施转用 Mina 实现。对于后者,据传多半会有大幅的性能提升,比较典型的一个例子是开源 XMPP 服务器 Openfire,其官方站点在一篇题为“ Scalability: Turn it to Eleven”的 Blog 中声称在改用 Mina 作为其网络 I/O 框架后,性能提升了 11 倍之多。具体的数据有两个版本,皆令人印象深刻,分别是:

  • 单机单 JVM 同时支持 17,000 在线 XMPP 客户端。
  • 在启用了单个 Connection Manager 的情况下,可同时支持多达 33,000 个在线 XMPP 客户端
  解释一下:目前看来,这篇 Blog 发表于 2006 年 12 月 19 日,并且在发表之后至少有过一次更新,我所见到的第一个版本的原文目前已无法考证,因此第一个版本的数据是我凭记忆写下来的,可能与原文有所出入。在更新后的版本中,原数据被更新为添加了 connection manager 支持后的评测数据。原文如下:
  So far we've hit 33k concurrent users with a single connection manager, running on a (old) Sun 280R server. CPU usage in the connection manager and core Wildfire server both hovered around 7% each. Those numbers are a pretty huge improvement over the previous version of Wildfire, which was barely able to hit 7500 concurrent users with maxed out CPU and memory usage. We're also only part way through the optimization process. The goal for the 3.2 release is to demonstrate 100k concurrent users on a single domain.
  解释一下,所谓的 connection manager ,是一种作用类似于整流器的服务器,大致的作用就是将外部的海量客户端发起的 TCP 连接汇总为少数的连至后台业务逻辑服务器的 TCP 长连接,从而使后台业务逻辑服务器能够处于较为稳定的网络环境并专注于业务逻辑处理。因此使用 connection manager 这样的整流服务器确实可以提高单台业务逻辑服务器所能够承受的并发客户端数目。
  不过 Openfire 团队在这里却有些含糊其辞:
  首先,尽管自打一开始在 Blog 的评论中就有人希望 Openfire 团队公开具体的运行环境和配置以帮助调校自己的服务器性能,但看起来 Openfire 团队并没有打算将之公布。于是,从实验验证的角度上看,他人难以重现,从而也就难以验证这组数据。
  其次,在第二版的数据中, Openfire 团队声称只是用一个 connection manager 便轻松达到了支持 33k 并发用户的性能,这是很可疑的。诚然,上文解释过 connection manager 的整流作用确实可以提高整个集群的并发支持能力,但一般而言,这是在多台 connection manager 对应一台业务逻辑服务器的情况下达到的。如果只使用单个 connection manager 实例,那么实际上跟没有使用差不了多少,因为集群的并发性能仍然受制于这单个 connection manager 所能承受的最高并发用户数。换言之,产生第二版数据的测试环境上的那个 connection manager 应该独立承担这 33k 个并发用户。然而,截至本文发文时止,从 Openfire 官方站点来看,当前与 Openfire 配套使用的 Connection Manager 的并发性能似乎与这个期望值仍有较大差距,摘录官方站点原文如下:
  Each connection manager should handle at least five thousand concurrent users. Experimental support for non-blocking connections is under development, which will greatly increase the number of connections that each connection manager module can support.
  可见,这里只说每个 connection manager 至少可以支撑 5k 个并发用户,与我们的期望值 33k 差的还是蛮远。不知是不是 Openfire 团队雪藏了什么能够大幅提高 Openfire 服务器集群性能的秘密武器呢?
  不过不管怎样,如果你在使用 Java 进行并发网络应用开发, Mina 绝对是一个值得推荐和学习的优秀工具

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-323089-1-1.html 上篇帖子: APACHE common功能列表 下篇帖子: apache伪静态配置 .htaccess
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表