很多人一直诟病openfire的并发能力, 由于项目中需要用到, 所以决定对openfire进行压力测试。首选的工具当然是大名鼎鼎的tsung。
Tsung是采用Erlang语音开发的一个开源的支持多种协议的分布式的负载测试工具,他能被用来对HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP and Jabber/XMPP 服务器进行压力测试。 Tsung能分布在多台客户机上模拟成千上万的(如果硬件足够多,甚至可以模拟上百万的)并发用户。
1、Tsung安装
- 安装环境:(lsb_release -a)
LSB Version::base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID:CentOS
Description: CentOS release 6.8 (Final)
Release: 6.8
Codename: Final
- 首先安装以下工具:
yum install gcc -y
yum install perl -y
yum install unixODBC
yum install unixODBC-devel
yum install -y ncurses-devel (如果不安装,下面安装erlang时会出现 "configure: error: No curses library functionsfound "错误)
- 下载并安装erlang
- 下载并安装Tsung
- 下载并安装perl Template,用于生成报告模版
# tar -zxvf Template-Toolkit-2.24.tar.gz
# cd Template-Toolkit-2.24
# perl Makefile.PL
# make
# make test
# make install
- 下载并安装gnuplot,用于聊天生成
export PATH=$PATH:$JAVA_HOME/bin:/usr/local/erlang/bin:/usr/local/tsung/bin(修改自己实际变量)
# source /etc/profile
测试:
# tsung -v
# erl -v
在这两台机器上修改 最大文件句柄数。 修改方法有两种:
当然有!那就是修改系统参数。)
方法二: 修改linux系统参数。vi /etc/security/limits.conf 添加
* soft nofile 65536
* hard nofile 65536
修改以后保存,注销当前用户,重新登录,执行ulimit -a ,ok ,参数生效了。
- cp /usr/local/tsung/share/doc/tsung/examples/jabber_register.xml /usr/local/tsung
- cp /usr/local/tsung/share/doc/tsung/examples/jabber.xml /usr/local/tsung
- 修改jabber_register.xml 和 jabber.xml(具体内容看附件中文件)
- 注册用户:
# ./tsung –f /usr/local/tsung/jabber_register.xml start
- 利用jabber.xml模拟用户登录openfire后执行上线、离开、忙碌、下线、发送消息等操作
# ./tsung –f /usr/local/tsung/jabber.xml start
- 生成report
等待测试完毕,进入log目录(只有输出了log日志才会自动log目录,默认路径:/root/.tsung/log)
#cd/root/.tsung/log/20120329-2234(路径也可以这样写:~/.tsung/log/)
#/usr/local/tsung/lib/tsung/bin/tsung_stats.pl (生成统计图表)