发表于: 2016-06-26 12:57:20

0 2111


【操作步骤】

一、在windows上压测jsp

1、下载安装apache-jmeter-3.0.zip
2、在测试计划中添加一个线程组,在测试计划右键弹出下拉菜单(添加-->Threads(Users)--->线程组)中选择线程组即可
3、配置线程组,主要是取样器错误后执行动作、线程数、准备时长循环次数
4、添加HTTP请求,在线程组上右键菜单(添加--->Sampler--->HTTP请求)选择HTTP请求

5、添加监听器(Listener)

察看结果树:在线程组上右键菜单(添加--->监听器--->察看结果树(View Results Tree),此功能用于debug
聚合报告:在线程组上右键菜单(添加--->监听器--->聚合报告(Aggregate Report)),此功能用来记录执行的http sample的执行结果
6、测试
      线程数200,Throughtput 19.8
      线程数500,Throughtput 31.0
      线程数1000,Throughtput 36.1
      线程数3000,Throughtput 40.6

      线程数5000,Throughtput 80.4  出现Error 14.30%,错误原因:页面无响应

参考链接:

http://www.cnblogs.com/fnng/archive/2012/12/22/2829479.html


二、项目上传服务器,压测jsp页面

1、Maven install将项目打包成war包,上传到服务器
2、服务器上建数据库建表 
3、修改nginx.conf配置文件
        [root@VM_86_225_centos ~]# cd /etc/nginx
        [root@VM_86_225_centos nginx]# vi nginx.conf
        添加下面这段
         location /xztask5/ {
         root   html;
         index  index.html index.htm;
         proxy_pass  http://123.206.6.60:8080;
         proxy_redirect  off;
         proxy_set_header Host $host;
         proxy_set_header  X-Real-IP  $remote_addr;
         proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }
4、启动Jetty和Nginx
        [root@VM_86_225_centos ~]# service jetty start    
        [root@VM_86_225_centos ~]# /bin/systemctl start  nginx.service

                         http://123.206.6.60/xztask5/home/default
6、Linux下安装JMeter
       ③配置环境变量[root@VM_86_225_centos local]#  vi /etc/profile
            末尾添加下面两行:

            export JMETER="/usr/local/jmeter"

            export CLASSPATH="$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$JMETER

            /lib/logkit-2.0.jar:$CLASSPATH"

      ④成添加后下述命令使配置生效:[root@VM_86_225_centos local]# source /etc/profile

      ⑤ 启动jmeter(遇到问题:缺少图形界面功能)
             [root@VM_86_225_centos ~]# cd /usr/local/jmeter
             [root@VM_86_225_centos jmeter]# ./bin/jmeter.sh
             提示:An error occurred: 

                    No X11 DISPLAY variable was set, but this program performed an operation which requires it.


【知识总结】

1、线程组参数

     线程数: 虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个

                     线程数。

     准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒

                       钟启动20个线程。也就是每秒钟启动2个线程。

     循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。

                       总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运

                       行脚本。

2、聚合报告分析 

        Label:每个JMeter的element(例如HTTP Request)都有一个Name属性,这里显示的就是Name属性的值

        #Samples:表示你这次测试中一共发出了多少个请求,如果模拟20个用户,每个用户迭代10次,那么这

                           里显示200

        Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction    

                         Controller 时,也可以以 Transaction 为单位显示平均响应时间
        Median:中位数,也就是 50% 用户的响应时间
        90% Line:90% 用户的响应时间
        95% Line:95% 用户的响应时间
        99% Line:99% 用户的响应时间
        Min:最小响应时间
        Max:最大响应时间
        Error%:本次测试中出现错误的请求的数量/请求的总数
        Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 

                            Transaction Controller时,也可以表示类似 LoadRunner 的 Transaction per Second 数
         KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec

         备注:关于 50% 和 90% 并发用户数的含义,参考链接:http://www.cnblogs.com/jackei/archive/2006/11

                    /11/557972.html

3、系统吞吐量(TPS)、用户并发量、性能测试概念和公式

       ① 系统吞度量要素:

            一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。

            单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。

       ② 系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间

              QPS(TPS):每秒钟request/事务 数量
              并发数: 系统同时处理的request/事务数
              响应时间:  一般取平均响应时间

              QPS(TPS)= 并发数/平均响应时间

4、了解Memcache

① Memcached概念:

         Memcached是一个免费开源的,高性能的,具有分布式对象的缓存系统,它可以用来保存一些经常存取

         的对象或数据,保存的数据像一张巨大的HASH表,该表以Key-value对的方式存在内存中。

② 操作流程:
1、检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作。
2、如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现)。
3、每次更新数据库的同时更新memcached中的数据,保证一致性。
4、当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。

③Memcached特征:

协议简单:它是基于文本行的协议,直接通过telnet在memcached服务器上可进行存取数据操作
基于libevent事件处理:Libevent是一套利用C开发的程序库,它将BSD系统的kqueue,Linux系统的epoll等事件处理功能封装成一个接口,与传统的select相比,提高了性能。
内置的内存管理方式:所有数据都保存在内存中,存取数据比硬盘快,当内存满后,通过LRU算法自动删除不使用的缓存,但没有考虑数据的容灾问题,重启服务,所有数据会丢失。
分布式:各个memcached服务器之间互不通信,各自独立存取数据,不共享任何信息。服务器并不具有分布式功能,分布式部署取决于memcache客户端。


5、linux下相关命令
      ctrl+c:终止进程
      linux下文件的复制、移动与删除,参考链接 http://blog.sina.com.cn/s/blog_7479f7990101089d.html
      将tgz文件解压到指定目录,参考链接 http://www.2cto.com/os/201308/233614.html

【错误记录】

1、在服务器上测试程序的时候一直打不开页面,显示Not Found,原来是之前我把pom.xml中name

     属性改为<name>xztask5</name>改回<name>xztask5 Maven Webapp</name>

     可以了,不知道是什么原因。

遗留问题

1、Linux启动jmeter遇到问题:缺少图形界面功能

      提示An error occurred: 

                    No X11 DISPLAY variable was set, but this program performed an operation which requires it.

     ①linux负载机环境下,切换到root用户,运行以下命令安装X11

       yum -y install xorg-x11-xauth
       yum install xorg-x11-server-utils
       yum install xorg-x11-server-Xnest
       yum install libXtst

     ②本地机器安装Xming-6-9-0-31-setup.exe,安装成功后并运行

     ③Xshell进行如下配置,选择SSH—>隧道,选中转发X11连接到,X DISPLAY填写:localhost:0

     但是还是打不开图形界面,网上大部分的资料都是这个思路,很困惑。


返回列表 返回列表
评论

    分享到