打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
TSUNG压测工具, 对XMPP协议进行测试 – 无题

这周准备对openfire3.6.4进行压力测试,从一些资料显示TSung对jabber协议有较好的支持,因此今天下载安装并初步对压力进行测试,主要的步聚如下:

1、从官方网站下载安装包(我的电脑是ubuntu ,所以下载的是Deb包)。 目前官方最新版本为1.3.3, 下载地址为:

http://tsung.erlang-projects.org/dist/ubuntu/tsung_1.3.3-1_all.deb

下载后使用 sudo dpkg -i tsung_1.3.3-1_all.deb 进行安装,报错, 找不到依赖包erlang-nox,

继续使用 :sudo apt-get install erlang-nox

sudo apt-get -f install

安装所有需要依赖的包。

安装成功后运行 tsung -v 显示版本号:Tsung version 1.3.3  表明安装成功。

2、建立压力测试配置文件对服务器进行配置。

默认的配置文件存在于 ~/.tsung/tsung.xml 中。

从示例配置中复制需要进行测试的配置 /usr/share/doc/tsung/examples/jabber_register.xml

示例配置代码如下:

  1. <?xml version=“1.0”?>
  2. <!DOCTYPE tsung SYSTEM “/usr/share/tsung/tsung-1.0.dtd”>
  3. <tsung loglevel=“notice” dumptraffic=“false” version=“1.0”>
  4.   <clients>
  5.     <client host=“localhost” use_controller_vm=“true”>
  6.     </client>
  7.   </clients>
  8. <servers>
  9.    <server host=‘127.0.0.1’ port=‘5222’ type=‘tcp’/>
  10. </servers>
  11. <!– register 200000 users in less than 15 minutes  –>
  12. <load>
  13.   <arrivalphase phase=“1” duration=“15” unit=“minute”>
  14.     <users maxnumber=“200000” interarrival=“0.0025” unit=“second”></users>
  15.   </arrivalphase>
  16.   </load>
  17. <options>
  18.   <option type=“ts_jabber” name=“global_number” value=“5”></option>
  19.   <option type=“ts_jabber” name=“userid_max” value=“200000”></option>
  20.   <option type=“ts_jabber” name=“domain” value=“erlang-projects.org”></option>
  21.   <option type=“ts_jabber” name=“username” value=“tsung”></option>
  22.   <option type=“ts_jabber” name=“passwd” value=“tsung”></option>
  23. </options>
  24. <sessions>
  25.   <session probability=“100” name=“jabber-example” type=“ts_jabber”>
  26.     <request>
  27.       <jabber type=“connect” ack=“local”></jabber>
  28.     </request>
  29.     <request>
  30.       <match do=“abort” when=“match”>error</match>
  31.       <jabber type=“register” ack=“local” id=“new”></jabber>
  32.     </request>
  33.     <request>
  34.       <jabber type=“close” ack=“local”></jabber>
  35.     </request>
  36.   </session>
  37. </sessions>
  38. </tsung>

 

对要进行压力测试的openfire服务器信息(IP和域名)进行修改:

  1. <servers>  
  2.    <server host=‘127.0.0.1’ port=‘5222’ type=‘tcp’/>  
  3. </servers>  
  4.   <option type=“ts_jabber” name=“domain” value=“erlang-projects.org”></option>  

由于第一次配置有问题就运行了 tsung start  &, 接下来运行就一直报错:

  1. tsung start &
  2. [2] 18021
  3. web@spider:~/.tsung$ Starting Tsung
  4. {error_logger,{{2010,12,13},{14,56,52}},“Protocol: ~p: register error: ~p~n”,[“inet_tcp”,{{badmatch,{error,duplicate_name}},[{inet_tcp_dist,listen,1},{net_kernel,start_protos,4},{net_kernel,start_protos,3},{net_kernel,init_node,2},{net_kernel,init,1},{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}]}
  5. {error_logger,{{2010,12,13},{14,56,52}},crash_report,[[{initial_call,{net_kernel,init,[‘Argument__1’]}},{pid,<0.22.0>},{registered_name,[]},{error_info,{exit,{error,badarg},[{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}},{ancestors,[net_sup,kernel_sup,<0.10.0>]},{messages,[]},{links,[#Port<0.162>,<0.19.0>]},{dictionary,[{longnames,false}]},{trap_exit,true},{status,running},{heap_size,610},{stack_size,24},{reductions,498}],[]]}
  6. {error_logger,{{2010,12,13},{14,56,52}},supervisor_report,[{supervisor,{local,net_sup}},{errorContext,start_error},{reason,{‘EXIT’,nodistribution}},{offender,[{pid,undefined},{name,net_kernel},{mfa,{net_kernel,start_link,[[tsung_controller,shortnames]]}},{restart_type,permanent},{shutdown,2000},{child_type,worker}]}]}
  7. {error_logger,{{2010,12,13},{14,56,52}},supervisor_report,[{supervisor,{local,kernel_sup}},{errorContext,start_error},{reason,shutdown},{offender,[{pid,undefined},{name,net_sup},{mfa,{erl_distribution,start_link,[]}},{restart_type,permanent},{shutdown,infinity},{child_type,supervisor}]}]}
  8. {error_logger,{{2010,12,13},{14,56,52}},std_info,[{application,kernel},{exited,{shutdown,{kernel,start,[normal,[]]}}},{type,permanent}]}
  9. {“Kernel pid terminated”,application_controller,“{application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}}”}
  10. Crash dump was written to: erl_crash.dump
  11. Kernel pid terminated (application_controller) ({application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}})
  12. [2]-  Exit 1                  tsung start

刚开始以为是注册用户时有重名的用户所至,但检查服务器上一个用户也没有创建成功,因此排除,经过一段时间的排错,发现是因为前一个进程没有关闭所致,因此杀掉原来的进程:

  1. $ ps aux | grep erlang
  2. web      16281  0.0  0.0   1956   524 ?        S    11:53   0:00 /usr/lib/erlang/erts-5.7.4/bin/epmd -daemon
  3. web      17822  0.0  0.4  49336  9380 pts/2    Tl   14:36   0:00 /usr/lib/erlang/erts-5.7.4/bin/beam.smp -P 250000 -A 16 -K true — -root /usr/lib/erlang -progname erl — -home /home/web — -smp auto -rsh ssh -noshell -sname tsung_controller -setcookie tsung -boot /usr/lib/erlang//lib/tsung_controller-1.3.3/priv/tsung_controller -boot_var TSUNGPATH /usr/lib/erlang/ -pa /usr/lib/erlang//lib/tsung-1.3.3/ebin -pa /usr/lib/erlang//lib/tsung_controller-1.3.3/ebin -tsung_controller smp_disable true -tsung_controller debug_level 5 -tsung_controller config_file “/home/web/.tsung/tsung.xml” -tsung_controller log_file “/home/web/.tsung/log/tsung.log”
  4. web      18978  0.0  0.0   3548   816 pts/2    R+   15:53   0:00 grep erlang
  5. web@local:~/.tsung$ kill -9 17822

 

再运行 tsung start , 终于看到输出到日志文件了!

检查服务器用户,正在不断的创建用户。嗯?怎么创建了1000个左右的用户就结束了呢?我的目标是要创建200000个用户呀,查看日志是因为用户open file 最大数限制, 修改系统最大连从接从1024到65535 ,无效!

后来才发现配置文件中还有一个重要的参数:maxusers, 于是增加到配置文件中:

  1. <clients>
  2.     <client host=“localhost” use_controller_vm=“true” maxusers=“60000”>
  3.     </client>
  4. </clients>

 

这次终于大功告成。 用户源源不断地创建到了openfire 中。

 

 

3、压力测试完成后, 需要出统计报表进行报告:

进入日志的目录:cd ~/.tsung/log/20101213-09:32

运行脚本文件: /usr/lib/tsung/bin/tsung_stats.pl

 

报错,不能生成图片(曲线图):

  1. $ /usr/lib/tsung/bin/tsung_stats.pl
  2. creating subdirectory data
  3. creating subdirectory images
  4. creating subdirectory gnuplot_scripts
  5. Error while running gnuplot: 对设备不适当的 ioctl 操作 at /usr/lib/tsung/bin/tsung_stats.pl line 167.
  6. Error while running gnuplot: 对设备不适当的 ioctl 操作 at /usr/lib/tsung/bin/tsung_stats.pl line 167.
  7. Error while running gnuplot: 对设备不适当的 ioctl 操作 at /usr/lib/tsung/bin/tsung_stats.pl line 167.
  8. Error while running gnuplot: 对设备不适当的 ioctl 操作 at /usr/lib/tsung/bin/tsung_stats.pl line 167.
  9. No data for Event
  10. No data for Async
  11. No data for Errors
  12. Error while running gnuplot: 对设备不适当的 ioctl 操作 at /usr/lib/tsung/bin/tsung_stats.pl line 167.
  13. Error while running gnuplot: 对设备不适当的 ioctl 操作 at /usr/lib/tsung/bin/tsung_stats.pl line 167.
  14. Error while running gnuplot: 对设备不适当的 ioctl 操作 at /usr/lib/tsung/bin/tsung_stats.pl line 167.
  15. Can’t locate Template.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/lib/tsung/bin/tsung_stats.pl line 367.
  16. web@spider:~/.tsung/log/20101213-08:12$

于是安装生成图片的依赖包:

sudo apt-get install gnuplot

图片生成了, 但还是报模板找不到:

  1. $ /usr/lib/tsung/bin/tsung_stats.pl
  2. No data for Event
  3. No data for Async
  4. No data for Errors
  5. Can’t locate Template.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/lib/tsung/bin/tsung_stats.pl line 367.

 

继续安装缺少的模板依赖:

sudo apt-get install perl5
sudo apt-get install libtemplate-perl

 

安装成功,html的报表也出来了, 到此为止。

 

4、接下来进行了40W用户的注册测试,以及在线用户测试。压力是出来了, 接下来的问题是openfire服务器上文件打开数限制导致的错误了,继续进行。。。。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
这些并发测试知识点,你掌握了吗?
perl的INC设置
Openfire性能优化与压力测试小结
在SOLARIS x86下成功编译安装ERLANG
Erlang非业余研究
Linux源代码目录结构说明
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服