一、配置Jmeter
1、设计性能测试的并发数、持续运行时间、单个线程的运行次数。
2、配置与请求相关的信息。
3、当需要进行1k以上的请求次数时,查看结果树需要勾选仅日志错误。
二、配置Jmeter的监控插件
1、下载JMeterPlugins-Standard-1.4.0。
2、解压JMeterPlugins-Standard-1.4.0,将其中\lib\ext\JMeterPlugins-Standard.jar包复制到jmeter安装目录下的\lib\ext下。
3、重启Jmeter,选择监听器,这时我们可以看到多了一些监听器,选择jp@gc-PerMon Metrics Collector。
4、配置jp@gc-PerMon Metrics Collector。
注:1)为了Y轴的单位为百分比,故在Network I/O的Metric parameter中设置值为unit=mb:bytesrecv。
2)日志文件一般选择.jtl类型的。
5、双击startAgent.bat(Windows下)或startAgent.sh(Linux下)启动ServerAgent。命令如下:
Windows下: 双击startAgent.bat或在命令窗口输入startAgent.bat。 Linux下 1、cd到ServerAgent的目录下。 2、修改startAgent.bat的权限为777:chmod 777 startAgent.bat 3、启动:sh startAgent.bat 4、修改端口:java -jar ./CMDRunner.jar --tool PerfMonAgent --udp-port 7879 --tcp-port 7879 将记录日志转换成图片 java -jar CMDRunner.jar --tool Reporter --input-jtl PerfMon.jtl --plugin-type PerfMon --generate-png report.png
三、Linux下的另一种性能测试配置
1、在Linux中安装nmon_x86_64_centos6监测工具,使用如下命令记录服务器运行状态。
cd /opt(进入opt文件目录) ./nmon_x86_64_centos6 -fT -s 10 -c 30(开始记录其中-s表示采集的时间间隔,-c表示采集的次数) ll(查看文件详情) sz 4pxtest30134_180516_1628.nmon(下载监测日志文件)
2、在测试开始后输入“./nmon_x86_64_centos6 -fT -s 10 -c 30”命令记录监测日志。
3、把监测日志文件下载到本地,通过nmon analyser v33g工具打开,就可以查看CPU、磁盘IO、网络等性能使用情况。
四、Windows下的性能监测
1、配置PSTools查看进程概况。
1)下载PSTools安装包,解压后,将文件夹中的pslist.exe复制到“C:\Windows\System32”路径下,然后双击运行。
2)输入命令查看进程概况。
pslist -t(以树形结构查看所有进程) pslist -dmx 进度pid(查看进程中的线程)
3、开始测试,查看测试结果。
五、生成测试报告
渠道路由系统获取路向信息性能测试报告-20180517.doc
六、常见性能瓶颈
1、当出现sql连接超时时,一般是程序数据库连接池的最大连接数不够导致的。
2、当出现请求连接不上时,一般是tomcat连接器的最大线程数不够导致的。
3、当出现sql连接数太多时,一般是mysql的最大连接数不够导致的。
七、通过JConsole监测JVM运行情况(或者JVisualVM)
1、在jdk的bin目录下双击JConsole.exe运行程序。
2、选择本地或者远程JVM来连接。
1)本地进程只需要选择相应的程序即可。
2)远程连接需要:服务器的IP、连接JVM的端口、服务器的用户名和密码。
3、观察堆、CPU、线程数等性能指标。
4、设置Linux下JConsole的监测端口。
1)打开程序所在的tomcat中bin目录下的catalina.sh,设置JAVA_OPTS。若8099端口被占用则换一个。其中服务器IP(不能是127.0.0.1)和监测端口必填。
JAVA_OPTS="-Djava.rmi.server.hostname=服务器IP -Dcom.sun.management.jmxremote.port=监测端口 -Dcom.sun.management.jmxremote.rmi.port=监测端口 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" 查看端口是否使用:netstat -nltpe|grep 端口
2)若防火墙有阻拦,则需要设置防火墙白名单端口。
在防火墙的/etc/firewalld/zones/public.xml路径下,添加不阻拦的端口,然后重启防火墙。
重启防火墙命令:firewall-cmd --reload
3)打开本地jdk中bin目录下的JConsole,选择远程连接此进程。如果添加了"-Dcom.sun.management.jmxremote.authenticate=false",则不需要输入用户名和密码。
4)连接成功后,即可使用JConsole监测JVM。
5)Tomcat提示端口被占用。
第一次启动时tomcat不会报错,如果停止之后tomcat会提示端口被占用了, 问题原因是在关闭Tomcat时,也执行了Catalish中的jmxremote的端口号。
解决办法:在catalish.sh文件中,判断是否为启动命令,如果是start,就设置变量,否则,就不设置。
if [ "$1" = "start" ];then
echo "set console"; JAVA_OPTS="-Djava.rmi.server.hostname=服务器IP -Dcom.sun.management.jmxremote.port=监测端口 -Dcom.sun.management.jmxremote.rmi.port=监测端口 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" else echo "no startup"; fi;