Openfire配置:

Ubuntu安装Openfire后性能极低,压力测试只能到4000在线用户数。

第一步 修改Openfire运行环境

通过ps -aux | grep openfire查看openfire服务能观察到启动命令为:

/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java -server -DopenfireHome=/usr/share/openfir -Dopenfire.lib.dir=/usr/share/openfire/lib -classpath /usr/share/openfire/lib/startup.jar -jar /usr/share/openfire/lib/startup.jar

首先看到这里用的JVM是openjdk提供的,性能不行,因此先kill掉这个进程(如果不是使用Openjdk就不需要这个操作了)。Kill掉再执行ps看看是不是真正被改掉了,然后切换到root下执行/etc/init.d/openfire start。再次查看已经切换成自己的JDK路径了,前提是配置过JDK。

/home/david/java/jdk1.8.0_05//bin/java -server -DopenfireHome=/usr/share/openfire -Dopenfire.lib.dir=/usr/share/openfire/lib -classpath /usr/share/openfire/lib/startup.jar -jar /usr/share/openfire/lib/startup.jar

第二步 epoll方式修改:

为提高性能需要更改启动命令为NIO支持epoll,需要修改/etc/init.d/openfire脚本文件。将DAEMON_OPTS改为

DAEMON_OPTS="$DAEMON_OPTS -server -Xms3072m -Xmx4096m -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider -DopenfireHome=${DAEMON_DIR} \

-Dopenfire.lib.dir=${DAEMON_LIB} -classpath ${DAEMON_LIB}/startup.jar\

-jar ${DAEMON_LIB}/startup.jar"

主要加入了-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider这个选项,注意这里还修改了jvm内存使用大小。

tsung压力测试:

第一步 修改打开最大文件数目

不做任何修改的主机安装tsung做压力测试时发现最多只能到达1000左右的在线用户数,错误为emfile执行ulimit –n查看为1024,意思是打开的文件太多了,默认为1024个。执行ulimit –n 65535,这个65535随便一个大点的数字就好。长期修改需要修改/etc/security/limits.conf,加入:

root - nofile 65535

注:root必须明确写上root不能使用*。

第二步 修改端口范围

继续做压力测试发现到达28000左右压力就上不去了,错误为eaddrinuse,这个时候是端口不够用了。需要修改/etc/sysctl.conf,加入:

net.ipv4.ip_local_port_range = 1024 65000

将端口可分配的范围增加到6W多个,执行sysctl –p立即生效,通过sysctl –a | grep range查看是否已经有变化。此时再去做压力测试就能发现在线用户数已经到达了6W个。

第三步 tsung集群

一台机模拟6W用户在线就已经到极限了,此时需要多台tsung测试机来进行测试。每台测试服务器上需要安装相同的erlang和tsung版本,并且通过root能够无密码登录(root可能非必须)。另外特别注意的一点是机器名称不能使用lc-optex之类的,中间的“-”在erl中会导致无法连接,直接取名kf2lc这样就OK了。

以三台测试机(可以用虚拟机采用桥接模式)为例,假设机器名称为kf2test01、kf2test02、kf2test03,IP分别对应为172.28.23.180、172.28.23.181、172.28.23.182。

分别在在各机器的/etc/hosts上加入:

172.28.23.180 kf2test01

172.28.23.181 kf2test02

172.28.23.182 kf2test03

Kf2test01切换到root后执行ssh kf2test02,如果无密码登录就OK了,提示输入密码的话需要改为无密码登录。其它机器做相同的连接测试,保证能够相互无密码登录。

此时ulimit –n查看远端服务器最大文件数限制仍然为1024,会导致集群的从服务器最大只能创建1000个左右的模拟用户,需要在/etc/profile中加入:

ulimit -SHn 65535

在tsung测试压力前可以通过执行erl来测试集群是否成功,shell中执行erl:

>erl -rsh ssh -sname root -setcookie mycookie

Eshell V5.8.5 (abort with ^G)

(root@kf2test01)1>slave:start(kf2test02,root,"-setcookie mycookie").

如果返回ok则表示成功,如下:

{ok,root@kf2test02}

无法集群则会半天无反应,最后显示{error,timeout}。

配置好tsung后,修改jabber.xml配置:

<clients>

<client host="kf2test01" use_controller_vm="false" maxusers="60000">

<ip value="172.28.23.180"/>

</client>

<client host="kf2test02" use_controller_vm="false" maxusers="60000">

<ip value="172.28.23.181"/>

</client>

<client host="kf2test03" use_controller_vm="false" maxusers="60000">

<ip value="172.28.23.182"/>

</client>

</clients>

然后执行tsung –f jabber.xml进行集群压力测试。通过这样方式测试理论上能达到18W模拟用户。以下是测试输出报告:

Openfire性能优化的一些思考:
1.现在服务器连接并发量才1400多,通过加入连接管理器(CONNECTION MANAGER)实现大并发,前端需要加入负载均衡服务器(Load Banlancer)或DNS来实现分流。
2.Openfire直接连接数据库,需要加入memcached作为数据库缓存。
3.Openfire集群据说有性能问题,需要找到瓶颈。
4.服务器最终应选为CentOS,而非ubuntu。

转载于:https://my.oschina.net/vdroid/blog/318187

Openfire性能优化与压力测试小结相关推荐

  1. Linux性能优化——stress压力测试工具

    简介 stress是Linux的一个压力测试工具,可以对CPU.Memory.IO.磁盘进行压力测试. 请使用者要注意,这个工具并不是模拟业务问题的,是模拟系统级问题的.所以用它来模拟的时候,和业务真 ...

  2. 转 Openfire 性能优化

    http://www.360doc.com/content/12/0601/16/9544_215230754.shtml Openfire 性能优化 2012年05月28日 星期一 15:58 ht ...

  3. kafka性能参数和压力测试

    上一篇文章介绍了Kafka在设计上是如何来保证高时效.大吞吐量的,主要的内容集中在底层原理和架构上,属于理论知识范畴.这次我们站在应用和运维的角度,聊一聊集群到位后要怎么才能最好的配置参数和进行测试性 ...

  4. mysql压力测试并优化_MySQL压力测试索引优化效果演示全过程

    1.模拟数据库数据 drop database if exists oldboy; create database oldboy charset utf8mb4 collate utf8mb4_bin ...

  5. Nginx的优化和压力测试

    我们要测试 nginx 的负载能力,需要借助压力测试工具.本博客是使用 Apache 服务器自带的一个 web 压力测试工具 ApacheBench ,简称 ab.ab 是一个命令行工具,即通过 ab ...

  6. 超实用web前端开发工具推荐(web开发+前端性能优化+浏览器兼容性测试+……)

    要说有哪些好用的前端开发软件和工具,我可有发言权哈~因为在学习的过程中积累了不少实用型前端开发工具.今天我就从浏览器兼容性测试工具.web开发工具.前端性能优化工具.大数据可视化工具这四个方向来和大家 ...

  7. 3 .前端性能优化-使用Lighthouse测试性能

    一.准备 https://developer.chrome.com/docs/devtools/speed/get-started/https://developer.chrome.com/docs/ ...

  8. Openfire 性能优化

    Openfire  是一个XMPP协议的IM Server. Openfire使用mysql配合它不知所谓几乎无效的的Cache机制就注定无法支撑高并发, 所以第一步,将数据库切换为比较强一点的Mon ...

  9. ab测试nginx Nginx性能优化

    转自:https://www.cnblogs.com/nulige/p/9369700.html 1.性能优化概述 在做性能优化前, 我们需要对如下进行考虑 1.当前系统结构瓶颈 观察指标 压力测试 ...

最新文章

  1. mysql can_***MySQL错误:Can't connect to MySQL server (10060)
  2. bootstrap bootstrapTable 隐藏列
  3. HDU 2546 饭卡(01背包裸题)
  4. [react] React15和16别支持IE几以上?
  5. Flask--读取配置参数的方式
  6. python 字典性质描述_卧槽!Python还有这些特性(2):奇怪的字典
  7. Structured Streaming 整合 Kafka指南
  8. 双色球机器学习线性回归蓝球预测案例
  9. 一例WINDOWS系统上的JAVA UI卡死
  10. 关关小说采集器规则正则表达式方法
  11. 【CCNA第二天】路由器密码破解及恢复
  12. 自控原理学习笔记---控制系统稳定性分析
  13. Windows下用命令行注销用户(包括注销其他用户)
  14. 用paypal付款手续费一般是多少?
  15. 微信小程序小型按钮内文字布局变形
  16. 要想学会编程,首先先会学习方法!
  17. 4、Screenshot-adb基本命令-Android
  18. python多用户B2C商城系统毕业设计开题报告
  19. 计算机输入法入门,电脑入门——第章 学习中文输入法.doc
  20. 三星4300多功能一体机清零方法

热门文章

  1. 第一个MapReduce程序-------WordCount
  2. php 流量,PHP 流量控制语句的顶替语法
  3. 6种字符串数组的java排序 (String array sort)
  4. 用onSaveInstanceState()方法保存Activity状态
  5. SQL横表与纵表互转
  6. 11-散列1 电话聊天狂人
  7. 2015 Autodesk 开发者日( DevDays)和 助力开发周火热报名中
  8. 10.2829(NOIP模拟修正总结)
  9. Linux下查看CPU信息、机器型号等硬件信息
  10. ngrok工具的介绍与使用,以及使用此工具时注意的事项