openfire内存问题解决方法汇总

问题描述:openfire部署到服务器上启动后运行正常,用户连接正常,内存占用几十兆,但运行十天左右后用户就再也连不上Openfire了,而此时到任务管理器上查看,openfire占用的内存已达到280多兆,openfire占用内存一直在增加,等达到极限后就挂了。查找了很多资料,问题定位在内存溢出和内存泄露,具体解决方案如下:

1、给openfire的JVM分配更多的内存空间。

OpenFire的JVM默认情况下使用64M内存
这在将OpenFire作为服务运行的情况下肯定不够用
我们需要修改参数.使其能够占用服务器的更多内存资源

Windows:
在openfire的bin目录下建立openfired.vmoptions(作为应用程序运行)或者openfire-service.vmoptions(作为服务运行)
内容添加
-Xms512m
-Xmx512m

-XX:SurvivorRatio=7

-XX:PermSize=256m

-XX:MaxPermSize=256m

指定了最大内存512M,其中永久内存256M ,在控制台中看到openfire可用内存确实变大了(内存大小可自己根据实际需要进行设置)

Linux:
修改/etc/sysconfig/opfire文件
去掉注释
OPENFIRE_OPTS=”-Xmx512m”


2、openfire吃内存只吃不吐,最后把自己活活撑死。经过查资料设置了一个参数最后解决:

在openfire的系统属性里添加如下参数。

xmpp.pep.enabled = false

这个是关闭openfire的PEP功能,PEP到底是啥功能目前不清楚,以后查到后再补进来。


3、检查自己写的openfire插件或操作数据库时有没有及时关闭流或连接,以免造成内存溢出(编码规范)。

目前优化后的效果还在进一步观察中,本文作为学习笔记记录一下,后面有需要还会进行相应补充。


以上方案的整理参考以下文章:

http://blog.csdn.net/happyhell/article/details/4311234

http://blog.sina.com.cn/s/blog_5da3708f01016paf.html

http://www.tuicool.com/articles/jyMVne

openfire问题解决汇总:

http://blog.csdn.net/xyz_fly/article/details/8666006


------------------------------------------------------------------------------2015-9-7---------------------------------------------------------------------------------------------------

今日个人重大发现:

这几日一直在解决openfire内存溢出问题,上面我提到要主动给openfire分配内存空间,我就写了一个配置文件openfired.vmoptions,但这个配置文件只对openfired.exe进程起作用,实际上openfire有两个进程,另一个就是openfire.exe,也是主进程,他们两个的区别就是多两个"d"。今天发现内存溢出的竟然是openfire.exe,我就尝试再写了一个与openfire.exe对应的配置文件openfired.vmoptions,结果真的起作用了。


给openfire分配内存空间时创建的两个文件

效果图:


如果自身程序代码没问题的话openfire内存溢出的问题就可以通过这种方式解决了。不过遇到内存溢出问题时还是要仔细检查自己写的代码是否有问题。希望这篇文章能给遇到相同问题的朋友以参考和帮助,有问题欢迎共同探讨。







评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值