自己慢慢积累。
分类: 网络与安全
2016-08-26 09:04:05
上一篇给大家介绍了阿里云的PTS服务,工具虽好,毕竟是需要花点钱的,比起高大上的LoadRunner是要便宜不少,但互联网讲究什么啊,Free啊,开源啊……那市场上有没有一个开源工具跟阿里云的PTS一样,即开即用呢?答案是肯定的,甚至比阿里云PTS出现的时间还早。其实啊,阿里云的PTS也是根据它进行二次开发来的,当然,这是我的怀疑,参考淘宝开放平台—聚石塔性能测试服务()便可看出一些端倪。
在前段时间进行项目的性能测试时,让我无意间发现了这款神器—nGrinder,瞬间便被它清爽的界面,操作简单且不失强大的功能所吸引,下面进入正题。
nGrinder()是基于Grinder开源项目,但由NHN(据说是韩国最大的互联网公司)公司的nGrinder开发团队进行了重新设计和完善(所以叫做nGrinder)。nGrinder是一款非常易用,有友好简洁的用户界面和controller-agent分布式结构的强大的压力测试工具。
它是由一个controller和连接它的多个agent组成,用户可以通过web界面管理和控制测试,以及查看测试报告,controller会把测试分发到一个或多个agent去执行。用户可以设置使用多个进程和线程来并发的执行该脚本,而且在同一线程中,来重复不断的执行测试脚本,来模拟很多并发用户。
nGrinder的测试是基于一个python的测试脚本,用户按照一定规则编写测试脚本以后,controller会将脚本以及需要的其他文件分发到agent,用Jython执行。并在执行过程中收集运行情况、响应时间、测试目标服务器的运行情况等。并保存这些数据生成运行报告,以供以后查看。
nGrinder的一大特点就是非常容易使用,安装也非常容易,可以做到开箱即用,测试新手也可以很容易就开始测试任务。当然,如果想执行一些比较复杂场景的性能测试,就需要测试人员对python有一定认识。
跟阿里云的PTS相比,有很多共同点
当然也有一些不同的地方,比如对测试机的管理,阿里云PTS可以直接在线管理被测服务器,而nGrinder需要我们手工在被测试服务器上安装监控程序,这样才能收集服务器的性能数据。阿里云PTS测试中可配置的更多,对新手来说更加方便,而nGrinder要实现稍微复杂的逻辑,就需要在测试脚本中实现。
先从下面位置下载nGrinder:
nGrinder的安装文件是作为一个可自执行的网络存档文件(WAR包)分发的。像Jenkins一样,你可以把这个存档文件放到你熟悉的Web应用服务器(像Tomcat)中,或者在命令行中直接运行。
千万注意,别将文件放到包含空格的文件夹路径中,比如:”C:\Program Files\Tomcat\webapps\”。
1
|
java -jar ngrinder-controller-X.X.war
|
1
2 3 |
nGrinder needs quite big perm-gen memory.
Please run nGrinder with the following command. java -XX:MaxPermSize=200m -jar ngrinder-controller-3.3.war |
1
|
java -XX:MaxPermSize=200m -jar ngrinder-controller-3.3.war --port 80
|
1
2 3 4 5 6 7 8 9 10 11 12 |
INFO 14. 1. 20 ?? 4:39:liquibase: ChangeSet ngrinder_datachange_logfile/db.changelog_schema_22.xml::22::ngrinder.3.3 r
an successfully in 4ms INFO 14. 1. 20 ?? 4:39:liquibase: ChangeSet ngrinder_datachange_logfile/db.changelog_schema_23.xml::23::ngrinder.3.3 r an successfully in 7ms INFO 14. 1. 20 ?? 4:39:liquibase: ChangeSet ngrinder_datachange_logfile/db.changelog_schema_24.xml::24::ngrinder.3.3 r an successfully in 2ms INFO 14. 1. 20 ?? 4:39:liquibase: ChangeSet ngrinder_datachange_logfile/db.changelog_schema_25.xml::25::ngrinder.3.3 r an successfully in 7ms INFO 14. 1. 20 ?? 4:39:liquibase: ChangeSet ngrinder_datachange_logfile/db.changelog_schema_26.xml::26::ngrinder.3.3 r an successfully in 8ms 2014-01-20 16:39:30.633:INFO:/:Initializing Spring FrameworkServlet 'appServlet' 2014-01-20 16:39:31.141:INFO::Started SocketConnector@@0.0.0.0:8080 |
1
|
JAVA_OPTS="-Xms600m -Xmx1024m -XX:MaxPermSize=200m" # for catalina.sh
|
1
|
set JAVA_OPTS=-Xms600m -Xmx1024m -XX:MaxPermSize=200m # for catalina.bat
|
nGrinder 3.3的 agents可以通过controller页面中的链接直接下载使用。下载的包中agents的相关配置已经默认配置好了,所以可以直接解压包,并运行“run_agent.sh”或者“run_agent.bat”启动agents,让其和controller通信。
因为使用的是admin帐号登录,下载的agents包中的配置可以分享给所有的用户使用。
如果你登录的是一个普通帐号,下载链接将变成“Download Private Agent” 下载的agents包中的配置只能当前用户使用。
1
2 |
run_agent.sh -o # for linux / mac
run_agent_bg.sh -o # If you want to run it in the background for linux / mac |
或者
1
|
run_agent.bat –o # for windows
|
1
|
stop_agent.sh # for linux / mac
|
或者
1
|
stop_agent.bat # for windows
|
1
|
controller.enable_agent_auto_approval=true
|
在controller的系统配置中配置,这样你需要自行在代理管理中批准哪些代理是否可用。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
> ulimit -a
core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 30676 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 16000 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 32768 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited |
如果你的机器很小,当你运行”ulimit -a”时,会显示”max user processes”和”open files”项,请配置它至少大于10000。使用root权限打开/etc/security/limits.conf文件,添加下面几行。
1
2 3 4 5 6 7 8 |
your_account soft nproc 32768
your_account hard nproc 32768 root soft nproc 32768 root hard nproc 32768 your_account soft nofile 16000 your_account hard nofile 16000 root soft nofile 16000 root hard nofile 16000 |
nGrinder的Monitor是agent的一个子集,是安装在目标服务器中的用于收集系统相关数据(比如CPU, MEM and Network) 的程序。
你可以通过右上角菜单下载monitors。
1
|
run_monitor_bg.sh # for linux / mac
|
或
1
|
run_monitor.bat # for windows
|
1
|
stop_monitor.sh # for linux / mac
|
或
1
|
stop_monitor.bat –o # for window
|
到此,nGrinder已经安装配置完毕,接下来就可以开始你的第一个性能测试了。
在完成agent和monitor的安装后,如果发现在agent管理列表中没有看到已经启用的agent服务器,那么请检查以下事项:
1. 防火墙是否关闭
2. 如果需要开启防火墙,检查上文提到的各个端口是否在防火墙的白名单中
3. 查看服务器的hostname,然后配置服务器的hosts,将hostname指向服务器的ip地址,而不是127.0.0.1