openfire极限优化
日志优化
- 默认是 用info 级别,最好不用openfire原生的打日志方式。
- 离线消息用存储不打回方式,不要用打回方式 xmpp.offline.type=store_and_drop
- ConnectionHandler 收到异常,关闭链接的异常日志,用debug级别
- 会有很多debug级别的日志,打印出消息体。这种需要避免掉, 例如,logger.debug("msg resend by old session: " + msg.toXML()); 虽然是debug,不会打印日志,但是会执行msg.toXML(),而这个是个耗时操作。可改成如下写法:
多人聊天优化

登录优化
- 用最简单的ssl验证方式,也就是plain 用base64编码 (replace into ofProperty values ("sasl.mechs","PLAIN");)
- 不用安全传输,也就是关掉tls(replace into ofProperty values ("xmpp.client.tls.policy","disabled");)
- xmpp登录流程 有11步包交互,非常复杂和繁琐。可以简化登录流程。运用快速登录,现已经简化到4步,只发stream包和auth包。
- 重写AuthProvider,返回一定要快
离线消息
- 离线改用缓存存储
- 设置离线消息用存储不打回方式,会少一次网络通信(通知发送方)
链接管理器
- 链接管理器与openfire之间通信方式改用mina。
- 链接管理器与openfire通信本身线程池优化,直接用mina提供的IoProcesser线程池
反空闲优化
线程池优化
- 1~2个SocketAcceptor线程来处理建立链接,
- IoAcceptor用于监听客户端的连接,每监听一个端口建立一个线程
- xmpp.processor.count=48 用48个线程处理SocketAcceptorIoProcessor,用来IO处理。
- xmpp.processor.threads.standard=64 xmpp.multiplex.processing.threads =64 用来做业务处理,也就是filter处理的过程
- openfire默认是用cpu核数个线程来处理epoll,如果cpu个数比较过多的话,可以减少线程数到8个,可用new NioSocketAcceptor( executor,processorCount );
网络参数优化
- net.ipv4.neigh.default.gc_stale_time = 120net.ipv4.conf.all.rp_filter = 0net.ipv4.conf.default.rp_filter = 0 //lvs内网通信需要net.ipv4.conf.default.arp_announce = 2net.ipv4.conf.all.arp_announce = 2net.ipv4.tcp_max_tw_buckets = 5000net.ipv4.tcp_syncookies = 1 //启用syn cookiesnet.ipv4.tcp_max_syn_backlog = 8096 //同时,并发建立的链接不能及时处理的放到队列的上限net.ipv4.tcp_synack_retries = 2 //syn ack没有收到,最多做2次重试net.ipv6.conf.all.disable_ipv6 = 1net.ipv6.conf.default.disable_ipv6 = 1net.ipv6.conf.lo.disable_ipv6 = 1net.ipv4.conf.lo.arp_announce = 2net.ipv4.conf.eth0.rp_filter = 0net.ipv4.conf.eth1.rp_filter = 0net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_fin_timeout = 10 //对于进入fin状态的,关掉链接的超时时间net.ipv4.ip_local_port_range = 1024 65000net.ipv4.tcp_rmem = 4096 16380 4194304 //读缓冲区(tcp是双工通道,读写通道是分离的)net.ipv4.tcp_wmem = 4096 16380 4194304 //写缓冲区net.ipv4.tcp_mem = 678558 1004745 1457116 //总的内存vm.overcommit_memory = 1xmpp.socket.backlog=8096xmpp.socket.buffer.receive=-1(表示用系统设置)xmpp.socket.buffer.send=-1(表示用系统设置)xmpp.socket.linger=-1是否运用优雅关闭xmpp.socket.tcp-nodelay= true是否用Nagle算法vm.swappiness = 0net.ipv4.neigh.default.gc_stale_time=120net.ipv4.conf.all.rp_filter=0net.ipv4.conf.default.rp_filter=0net.ipv4.conf.default.arp_announce = 2net.ipv4.conf.all.arp_announce=2net.ipv4.tcp_max_tw_buckets = 5000net.ipv4.tcp_syncookies = 1net.ipv4.tcp_max_syn_backlog = 8192net.ipv4.tcp_synack_retries = 2net.ipv6.conf.all.disable_ipv6 = 1net.ipv6.conf.default.disable_ipv6 = 1net.ipv6.conf.lo.disable_ipv6 = 1net.ipv4.conf.lo.arp_announce=2net.ipv4.conf.eth0.rp_filter = 0net.core.rmem_default = 256960net.core.rmem_max = 513920net.core.wmem_default = 256960net.core.wmem_max = 513920net.core.netdev_max_backlog = 2000net.core.somaxconn = 8192net.core.optmem_max = 81920net.ipv4.tcp_mem = 131072 262144 624288net.ipv4.tcp_rmem = 8760 256960 6088000net.ipv4.tcp_wmem = 8760 256960 6088000net.ipv4.tcp_keepalive_time = 1800net.ipv4.tcp_keepalive_intvl = 30net.ipv4.tcp_keepalive_probes = 3net.ipv4.tcp_sack = 1net.ipv4.tcp_fack = 1net.ipv4.tcp_timestamps = 0net.ipv4.tcp_window_scaling = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 0net.ipv4.tcp_fin_timeout = 30net.ipv4.ip_local_port_range = 1024 65535
StringBuilder优化
packet.createCopy
System.currentTimeMillis()
禁用roster花名册、禁用presence包通讯
ping包优化

由于我们的IM系统是做了送达,也就是服务端收到消息后,会显示的给用户发个回执包。和ping包优化机制一样,链接管理器收到消息后,就直接返回回执包。
openfire极限优化的更多相关文章
- web前端图片极限优化策略
随着web的发展,网站资源的流量也变得越来越大.据统计,60%的网站流量均来自网站图片,可见对图片合理优化可以大幅影响网站流量,减小带宽消耗和服务器压力. 一.现有web图片格式 我们先来看下现在常用 ...
- iOS图片加载速度极限优化—FastImageCache解析
FastImageCache是Path团队开发的一个开源库,用于提升图片的加载和渲染速度,让基于图片的列表滑动 优化点 iOS从磁盘加载一张图片,使用UIImageVIew显示在屏幕上,需要经过以下步 ...
- iOS 图片加载速度极限优化—FastImageCache解析
FastImageCache是Path团队开发的一个开源库,用于提升图片的加载和渲染速度,让基于图片的列表滑动起来更顺畅,来看看它是怎么做的.优化点iOS从磁盘加载一张图片,使用UIImageVIew ...
- TVP思享 | 四个全新维度,极限优化HTTP性能
导语 | 当产品的用户量不断翻番时,需求会倒逼着你优化HTTP协议.那么,要想极限优化HTTP性能,应该从哪些维度出发呢?本文将由TVP陶辉老师,为大家分享四个全新维度.「TVP思享」专栏,凝结大咖思 ...
- Openfire 性能优化
Openfire 是一个XMPP协议的IM Server. Openfire使用mysql配合它不知所谓几乎无效的的Cache机制就注定无法支撑高并发, 所以第一步,将数据库切换为比较强一点的Mon ...
- 【转】加快网站访问速度——Yslow极限优化
Yslow是一套雅虎的网页评分系统,详细的列出了各项影响网页载入速度的参数,这里不做多说. 我之前就一直参考Yslow做博客优化,经过长时间的学习也算是有所收获,小博的YslowV2分数达到了94分( ...
- 【计算机视觉】极限优化:Haar特征的另一种的快速计算方法—boxfilter
这种以Boxfilter替代integral image 的方法很难使用到haar.LBP等特征检测中,因为像下面说的,它不支持多尺度,也就是说所提取的特征必须是同一个大小,最起码同一个宽高比的,这一 ...
- 技术|Android安装包极限优化
版权声明 1.本文版权归原作者所有,转载需注明作者信息及原文出处. 2.本文作者:赵裕(vimerzhao),永久链接:https://github.com/vimerzhao/vimerzhao.g ...
- app 性能优化的那些事(二)
来源:树下的老男孩 链接:http://www.jianshu.com/p/2a01e5e2141f 这次我们来说说iOS app中滑动的那些事.iOS为了提高滑动的流畅感,特意在滑动的时候将runl ...
随机推荐
- openlayers应用“三”:百度地图纠偏
前两篇文章介绍了openlayers3加载百度在线和离线瓦片地图,页面上能够正常显示.地图加载后在地图上显示一条GPS轨迹,发现离实际位置相差太远,如下图所示: 轨迹形状和实际形状相同,但是位移太远, ...
- Java中的增强 for 循环 foreach
foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理.能够提高性能,并减少代码出错的几率.在 J ...
- JavaScript中的DOM函数与关键字汇总
DOM节点的属性 属性 描述 attributes数组 获取某个节点的所有属性子节点(实际是一个NodeList对象) childNodes数组 获取某个节点的所有子节点,可以按数组方式访问子节 ...
- ionic之$ionicHistory
$ionicHistory 定义:当用户通过导航栏切换视图页面的时候,ionicHistory起到跟踪视图的作用,类似的浏览器的行为方式,一个ionic应用程序能够保持以前的视图,当前视图,和前视图( ...
- JDK版本会影响项目部署
最近在公司里面部署javaweb项目的时候,项目启动的时候报错,我使用了各种方法来寻找答案,将近花了很长的时间.就在今天我终于找到了问题的根源,我开始用的是JDK1.8的版本,换了一个1.7版本的JD ...
- SQL server 用命令行更改数据库
(计应154兰家才) CREATE DATABASE 数据库名 ON [PRIMARY] ( <数据文件参数> [,…n] [<文件组参数>] ) [LOG ON] ( ...
- 集群/分布式环境下5种session处理策略
转载自:http://blog.csdn.net/u010028869/article/details/50773174?ref=myread 前言 在搭建完集群环境后,不得不考虑的一个问题就是用户访 ...
- 2017年PHP培训机构排名
2017年PHP培训机构排名 PHP培训属于IT培训的一个领域.随着互联网的火爆,PHP也变得异常火爆.通过对PHP培训机构的调查与了解,到底学员选择哪一家的PHP培训机构才能够学到真正的技术,PHP ...
- Python正则表达式完全指南(上)
正则表达式处理文本有如疾风扫秋叶,绝大部分编程语言都内置支持正则表达式,它应用在诸如表单验证.文本提取.替换等场景.爬虫系统更是离不开正则表达式,用好正则表达式往往能收到事半功倍的效果. 介绍正则表达 ...
- AjaxPro.AjaxMethod 简单应用,
用AjaxPro无刷新实现站内信息实时提示功能,用AjaxPro.2.dll实现表数据绑定和无刷新分页 首先,必不可少的就是dll-----AjaxPro.2 下载地址:http://down7.pc ...