openfire3.10.2安装部署及集群配置及openfire优化
来源:互联网 发布:建站系统源码php 编辑:程序博客网 时间:2024/06/07 13:14
建议:使用openfire3.10.3 这个版本相较于3.10.2修复了几个重大BUG。
版权声明:本文为博主原创文章,未经博主允许不得转载。
由于是纯手打,并没有实际操作一遍(懒),所以有些名词可能不对,见谅!
图片太小则缩放页面比例调高
openfire单节点安装
步骤:
1.修改主机名Hostname:
对于CentOS系统,需要修改两处:
一是/etc/sysconfig/network,二是/etc/hosts,只修改任一处会导致系统启动异常。
对于Ubuntu系统,也需要修改两处:
一是/etc/hostname,二是/etc/hosts
最后,两个系统都需要执行:
hostname hostname1
完成后 hostname查看
2.安装jdk
- 把jdk1.8 tar.gz压缩文件丢入 /home
- 解压到/usr/local
- 重命名为jdk1.8
- vi /etc/profile,加入
export JAVA_HOME=/usr/local/jdk export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- xshell重进 OK
3.安装openfire
- 百度搜索openfire,进入官网http://www.igniterealtime.org/
- 点击download,找到 openfire3.10.2 或者最新版本,选择linux,选择tar.gz
- 下载好后,丢到linux服务器上,此处以/home目录为例
- tar -zxvf openfire3.10.2.tar.gz -C /usr/local,解压到 /usr/local 目录
- vi /openfire/bin/openfire,加入jvm参数,按需分配
INSTALL4J_ADD_VM_PARAMS="-Xms10240m -Xmx10240m -XX:MaxPermSize=1024m -XX:PermSize=1024m -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider"
而后保存退出
完成!
4.配置openfire
- openfire目录下 ./bin/openfire start启动openfire
- 浏览器进入控制台 ip:9090(conf/openfire.xml可以改端口,或者在管理控制台更改)
- 控制台设置域,按需分配,此处为: ubuntu,意味之后客户端连接用户名为 username@ubuntu
- 选择mysql 下面填写内网地址,填写对应的账号密码:
// mysql数据库提前安装好,并建好openfire专用库,此处库名openfirejdbc:mysql://172.168.111.13:3306/openfire?rewriteBatchedStatements=true
- 连接数最大设置为300,管理员账户改为admin,密码随意设置,此处admin
- 至此openfire设置完毕.已经可以用客户端注册登录了
图示:
默认配置下openfire能支持5000+在线用户
5.openfire集群安装
- 提前配置好两个服务器的openfire(参考上面步骤)
- openfire控制台加入插件broadcast和Hazelcast
- 完成后,在2台openfire控制台的clusting/集群,点击启用集群
- 等待5-10分钟,若是没有动静(期间一定要等几分钟等集群设置生效),则重启openfire,重启后进入,可以看到两个节点已经加入了集群
- 至此,集群配置成功
ps:hazelcast插件默认方式是广播,可以配置点对点。
配置文件在openfire/plugins/hazelcast/class/hazelcast.xml
替换如下:
<join> <multicast enabled="false"> <multicast-group>224.2.2.3</multicast-group> <multicast-port>54327</multicast-port> </multicast> <tcp-ip enabled="true"> <member>172.168.111.1:5701</member> <member>172.168.111.2:5701</member> </tcp-ip> <aws enabled="false"/></join>
现在,2台节点的openfire已经可以支撑10000+在线用户了!
其他设置以及优化
插件
- Subscription插件:自动同意好友请求,添加插件后在服务器设置最下面设置方式。
服务器设置
- 把没用的一些设置关掉,例如HTTP绑定等等
优化
- 修改打开最大文件数目:ulimit –n 65535
- 设置服务器缓存大小,系统属性加入:
// 注意不能有空格,特别是 size后面// -1代表无穷大 100000000即是95MClientSessionInfoCache: cache.ClientSessionInfoCache.sizeRoster: cache.username2roster.sizeuser: cache.userCache.sizegroup: cache.group.sizegroupMeta: cache.groupMeta.sizeoffline message: cache.offlinemessage.sizeofflinePresence: cache.offlinePresence.sizeLast Activity Cache: cache.lastActivity.sizeVCard: cache.VCard.size// 以上都是高压下容易飘红的
附图:
未来需要优化的几个点:
1.加大服务器内存 20G变成150G2.之前源码修改的是3.10.2,之后把新版本的源码下载下来重新修改,而后打包部署. 以解决3.10.2遗留的BUG(现在4.0beta版本出来了,可能过段时间会开源,改了很多bug)3.根据需求定制openfire,即去除无用的组件,出去无用的消耗资源的一些cache或hashMap,变量之类4.移出session,把session存入到redis中。5.除了session,其他的很多cache(服务器缓存)全部移入redis。
更加科幻的展望:
1.openfire不使用mysql,使用redis作为数据库存储数据,再做个mysql持久化及主从就行了。
论坛有牛人说过:openfire使用了它那不知所谓的cache(其实就是HashMap),就注定无法支撑数十万连接。
(强哥说了:HashMap存储超过几万后,会有问题,好像是jdk自带的问题)
2016-1-8:
另外一个最重要的优化的方面,就是保证连上服务器的是 有用 的用户。
譬如我们服务器之前连了10W,但是其实真正用户绑定并使用XX系统的只有1W,但是10W个客户端却是连着的。(举例子,之前我们的系统就好比进入淘宝后台自动登录旺旺,那么进淘宝多少人就有多少人登录了旺旺,但是其实真正使用旺旺的只有十分之一甚至更少,我们只需要让用户在需要旺旺对话的时候才连接服务器的话,那么瞬间服务器压力能减少 90%这是比任何优化方案都有效的解决方法。是从业务本身去思考并优化,这个需要集思广益。)
自带BUG解决
需修改源码重新打包部署,后续补上
2016-1-8:
新的3.10.3甚至4.0版本已经解决了很多个大bug了,我们坐享其成即可。
4.0beta估计不久后就开源了,那时候应该就无比稳定健壮了.
0 0
- openfire3.10.2安装部署及集群配置及openfire优化
- openfire安装及配置
- openfire安装及配置
- Eclipse中openfire3.8.2源码部署及生成安装文件
- openfire3.7.1及Darwin安装
- Openfire简介及安装配置
- openfire3.9.1 源码部署及运行
- openfire3.9.1 源码部署及运行
- openfire3.9.3 源码部署及运行
- openfire3.9.1 源码部署及运行
- openfire3.9.1 源码部署及运行
- Openfire安装部署及插件的开发
- rabbitmq集群部署及配置
- openfire3.9.3集群配置
- openfire3.9.1集群配置
- openfire3.9.1集群安装
- Eclipse3.7.2中openfire3.7.1源码部署及生成安装文件
- openFire服务器安装及MySQL数据库配置
- 数据结构课程设计--“模拟图书管理系统的开发”
- Linux进程实践(3) --进程终止与exec函数族
- ios 微信登录
- ubuntu 第一个Hello world模块编译(本机运行)
- REDIS 配置说明
- openfire3.10.2安装部署及集群配置及openfire优化
- v8 resource
- Shell系列 - Mac OS X自动下载切换桌面壁纸
- 如何免费下载Youtube视频
- iOS屏幕(UIViewController)旋转的横竖屏
- Apache Thrift的简单使用
- Swift - 按钮(UIButton)的用法
- 内存管理
- Jquery鼠标点击后变色,点击另一个按钮颜色还原