openfire压测概述

个月左右的测试,总算得到预定目标(3台服务器,并发50w用户在线)

测试环境搭建

压测客户端无他-tsung,尝试了windows安装perl失败后,使用centOS6.5作为压测机

压测服务器,因为集群需要大内存,因而安装了64位的centos6.7.

所幸这些都可以使用vmware虚拟机,只要装好一台,通过简单copy就能复制出多台.实际上,一共也就使用了6台硬件设备.

设备类别

台数

系统

虚拟机操作系统

说明

OF服务器

3

i54570,12G,Win7

CentOS6.7 8G

其中一台运行mysql数据库

tsung客户机

3

i54570,4G,Win7

CentOS6.5 1G

虚拟机1G内存,运行3个实例

jvisualvm+mat使用

如果不跑集群,其实openfire还是比较稳定的,单台4G内存情况下,也有运行到25W同时在线的情况。一旦用了hazelcast,反而不稳定了,出现问题就需要使用工具进行定位,看看哪里堵住了。

运行结果与心得:

0.千万不要用OpenJdk的虚拟机,官方推荐用CMS进行GC,那就老实点用JDK7.

1.openfire使用mina作为nio底层实现.实测一秒20-25个新连接还算稳定,超过30个就会堵住.(占用大量内存存储未处理的包-经查,时offlineMessage堵住,tsung去掉发送消息的,就快了)

2.openfire使用hazelcast的缓存机制实现集群。经过实际测试,这货太消耗内存了,20w连接大概需要4G的内存(包含mina连接需要的内存),加上还要互为主备的机制,至少还要1.5G才能实现集群的使用。测试至少要8G内存才行,实际使用推荐12G以上.

3.仅仅是压测同一台服务器,与同时压测多台情况大不相同,后期改进主要集中在数据库性能.(后期改进点-)

4.Linux内核修改limits.conf和net.nf_conntrack_max参数后性能有所提升。

程序优化点:

1.JVM配置优化:

需要自己修改openfire.sh,增加虚假机参数.(hazelcast插件有推荐配置,修改一下就行)

2.offlineMessageStore+squenceManager优化:

前面说过了,mysql最多支持每秒30个的NextID,实际运行offlineMessage会很多,修改使用redis保存离线消息。

3.hazelcast和openfire优化:

hazelcast本身就很多问题,例如一台设备内存满了或者处理超时,那么整个集群就没响应了。如果还是用hazelcast作为集群的缓存,需要剥离到单独的设备上去。

openfire用的是java的序列化,内存用的多,效率慢;hazelcast是支持自定义序列化的,经过比较,我用了kryo作为序列化工具,在对ClientSessionInfo,Roster,RosterItem,User这几个类优化后,内存使用明显小了很多。

SessionManager 把所有的clientSession都放到hashmap中,当用户变得非常大量时候,sessionInfoCache的操作必然影响效率。

4.登录流程简化:

xmpp的登录报文交互太多了,虽然tsung使用最简单的iqauth登录,实际使用还是需要简化登录流程,这点需要客户端配合。

优化openfire服务器,达到单机20万,集群50万的更多相关文章

  1. AliRedis单机180w QPS, 8台服务器构建1000w QPS Cache集群(转)

    http://blog.sina.com.cn/s/blog_e59371cc0101br74.html 引言:        如今redis凭借其高性能的优势, 以及丰富的数据结构作为cache已越 ...

  2. 【web】 亿级Web系统搭建——单机到分布式集群

      当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架 ...

  3. [转]亿级Web系统搭建:单机到分布式集群

    当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...

  4. 亿级Web系统搭建:单机到分布式集群【转】

    当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...

  5. 亿级Web系统搭建:单机到分布式集群

    亿级Web系统搭建:单机到分布式集群 当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压 ...

  6. [link] 构建负载均衡服务器之一 负载均衡与集群详解

    一.什么是负载均衡 首先我们先介绍一下什么是负载均衡: 负载平衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群).网络连接.CPU.磁盘驱动器或其他资源中分配负载, ...

  7. Redis安装(单机及各类集群,阿里云)

    Redis安装(单机及各类集群,阿里云) 前言 上周,我朋友突然悄悄咪咪地指着手机上的一篇博客说,这是你的博客吧.我看了一眼,是之前发布的<Rabbit安装(单机及集群,阿里云>.我朋友很 ...

  8. [转帖]当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题?

    改天学习一下. https://www.cnblogs.com/alisystemsoftware/p/11570806.html   当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题 ...

  9. RabbitMQ的使用(二)- RabbitMQ服务在单机中做集群

    RabbitMQ的使用(二)- RabbitMQ服务在单机中做集群 作者:markjiang7m2 原文地址:https://www.cnblogs.com/markjiang7m2/p/128371 ...

随机推荐

  1. ueditor

    1:添加插件包 2:添加文件上传的jar包 3:页面引入ueditor插件 <!-- ueditor --><link type="text/css" href= ...

  2. linux下jdk和tomcat的安装配置

    操作系统:centos (32bit) 1.  下载合适的安装包. 原则是:安装包类型和(bit)位数要与操作系统一致,tomcat和jdk的版本要兼容,如: apache-tomcat-6.0.37 ...

  3. arp命令

    地址解析协议ARP用于将IP地址解析成MAC地址.当把数据包从一个计算机发送到另一个计算机的时候,计算机或路由器使用ARP请求来确定下一跳的MAC地址. MAC地址用于按跳发送数据包,直到达到最终目的 ...

  4. X86架构与ARM架构比较(摘录自网络)

    引言 CPU是怎样运作的? CPU的运作与人脑的运作差不多.先谈一下人这个系统的工作方式.眼镜.耳朵.舌头.皮肤等等感觉器官接收到"触觉",把信息传给大脑,大脑把信息处理后,把处理 ...

  5. c语言warning总结

    1.function declaration isn’t a prototype括号中无参数,也要加void 2.array subscript is above array bounds数组下标大于 ...

  6. python基础知识7——迭代器,生成器,装饰器

    迭代器 1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器 ...

  7. 如何在SqlServer中获取前端连接的IP地址,计算机名等信息

    在一些需求中,可能我们需要知道连接到SqlServer的前端程序的一些系统信息,比如前端连接的计算机名称,IP地址,什么时候开始请求连接,什么时候结束连接等信息. 如果你对SqlServer的系统函数 ...

  8. Android客户端稳定性测试——Monkey

    修改时间 修改内容 修改人 2016.6.20 创建 刘永志 2016.6.29 完成 刘永志 Monkey简介: Android SDK自带的命令行测试工具,向设备发送伪随机事件流,对应用程序进行进 ...

  9. mssql2000 身份证号码验证

    CREATE VIEW thisDate --返回当前日期,因为自定义函数中不能使用GETDATE() AS ),) AS aDate )) /*mssql2000 返回值=0,身份证校验正确 1:位 ...

  10. P4基函数

    July , P4 syms p1 p2 p3 phi(:,) = /*p1.*(*p1-).*(*p1-).*(*p1-); phi(:,) = /*p2.*(*p2-).*(*p2-).*(*p2 ...