精华内容
下载资源
问答
  • 压力测试瓶颈分析

    2014-03-03 17:25:11
    1. 数据库连接池  初始:8  最大:32  增长:2  空闲超时:300 ...2. 服务器(如weblogic)内存启动内存应扩大 ... -Xms2024m -Xmx2024m 可设置机器内存的1/2. ...3. 服务器(如weblogic)处理进程数应扩大,一般...

    1. 数据库连接池

          初始:8

          最大:32

          增长:2

          空闲超时:300

    2. 服务器(如weblogic)内存启动内存应扩大

         -Xms2024m -Xmx2024m  可设置机器内存的1/2.

        

    3. 服务器(如weblogic)处理进程数应扩大,一般为数据库连接池的5-8倍

         -Dweblogic.threadpool.MinPoolSize=5
         -Dweblogic.threadpool.MaxPoolSize=220

     

    4.数据库方面的优化

     

     

     

    展开全文
  • 性能测试压力瓶颈分析及优化

    万次阅读 2016-05-25 10:25:52
    因此,我们需要充分了解压力机,并对其进行调优,从而避免压力机自身瓶颈对压测带来影响,为性能测试结果的准确可靠,提供前置条件。 下面,我们分三步来确保压力机靠谱: STEP1:了解压力机自身可能成为瓶颈的...

    性能测试过程中,为了给服务器足够的压力,少不了要使用压力机,即模拟客户端的机器,压力机如果使用不当,测试结果就会不准确,反映不了服务器的真实性能情况。
    因此,我们需要充分了解压力机,并对其进行调优,从而避免压力机自身瓶颈对压测带来影响,为性能测试结果的准确可靠,提供前置条件。
    下面,我们分三步来确保压力机靠谱:
    STEP1:了解压力机自身可能成为瓶颈的配置,并调优;
    STEP2:了解被模拟程序自身可能成为瓶颈的配置,并调优;
    STEP3:找到压力机上,单进程的性能瓶颈,以避免在施压过程中受此干扰;


    STEP1:

    1. 网络通讯协议相关配置调优(以TCP为例),优化最大连接数,理论上TCP最大连接数为65535,因此,理论上单机的瞬时并发最大不可能超过65535;

      既然存在使用压力机,必然是通过某种网络通讯协议来建立连接,并发送请求。以TCP协议为例,先来了解TCP协议:
      如何标识一个TCP连接?
      在确定最大连接数之前,先来看看系统如何标识一个tcp连接。系统用一个4四元组来唯一标识一个TCP连接:{local ip, local port,remote ip,remote port}。
      client最大tcp连接数(理论上)
      client每次发起tcp连接请求时,除非绑定端口,通常会让系统选取一个空闲的本地端口(local port),该端口是独占的,不能和其他tcp连接共享。tcp端口的数据类型是unsigned short,因此本地端口个数最大只有65536,端口0有特殊含义,不能使用,这样可用端口最多只有65535,所以在全部作为client端的情况下,最大tcp连接数为65535,这些连接可以连到不同的server ip。
      server最大tcp连接数(理论上),与本文无关,详见:http://www.cnblogs.com/mydomain/archive/2013/05/27/3100835.html
      上面给出的是理论上的单机最大连接数,在实际环境中,受到机器资源、操作系统等的限制,其最大并发tcp连接数远不能达到理论上限,另外1024以下的端口通常为保留端口。
      除端口限制外,TCP连接的内存设置,也会影响到最大连接数。在默认2.6内核配置下,经过试验,每个socket占用内存在15~20k之间。
      综上,关于TCP最大连接数,linux/Unix下有以下三类配置可以调优
      A:Linux网络内核对本地端口号范围的限制
      修改/etc/sysctl.conf文件,在文件中添加或修改如下行:

      ```
      net.ipv4.ip_local_port_range = 1024 65000
      ```
      
      这表明将系统对本地端口范围限制设置为1024~65000之间。请注意,本地端口范围的最小值必须大于或等于1024;而端口范围的最大值则应小于或等于65535。修改完后保存此文件。
      

      修改完成后,执行sysctl
      sysctl -p
      如果系统没有错误提示,就表明新的本地端口范围设置成功。如果按上述端口范围进行设置,则理论上单独一个进程最多可以同时建立60000多个
      B:Linux网络内核的IP_TABLE防火墙对最大跟踪的TCP连接数的限制,如果没有防火墙,可忽略此条:(参考:http://blog.chinaunix.net/uid-24907956-id-3428052.html
      首先确定有没有防火墙
      service iptables status
      如果有,条件允许,可以直接
      service iptables stop iptables
      再查看防火墙状态:
      service iptables status
      运行结果:
      iptables: Firewall is not running.
      如果不能关闭防火墙,则修改IP_TABLE防火墙对最大跟踪的TCP连接数:
      修改/etc/sysctl.conf文件,在文件中添加或修改如net.ipv4.ip_conntrack_max = 40960
      修改完成后,执行sysctl
      sysctl -p
      如果系统没有错误提示,就表明系统对新的最大跟踪的TCP连接数限制修改成功。若按上述参数进行设置,则理论上单独一个进程最多可以同时建立40960个TCP客户端连接。
      C:TCP相关内存限制
      在默认2.6内核配置下,经过试验,每个socket占用内存在15~20k之间。
      修改配置文件:/etc/sysctl.conf

      net.core.rmem_default = 262144
      net.core.wmem_default = 262144
      net.core.rmem_max = 16777216
      net.core.wmem_max = 16777216
      **net.ipv4.tcp_rmem = 4096 4096 16777216
      net.ipv4.tcp_wmem = 4096 4096 16777216
      net.ipv4.tcp_mem = 786432 2097152 3145728
      net.ipv4.tcp_max_syn_backlog = 262144**
      net.core.netdev_max_backlog = 20000
      net.ipv4.tcp_fin_timeout = 15
      net.ipv4.tcp_tw_reuse = 1
      net.ipv4.tcp_tw_recycle = 1
      net.ipv4.tcp_max_orphans = 131072

      配置文件生效:sudo /sbin/sysctl -p
      主要看这几项,按机器内存大小,进行调节:
      net.ipv4.tcp_rmem 用来配置读缓冲的大小,三个值,第一个是这个读缓冲的最小值,第三个是最大值,中间的是默认值。我们可以在程序中修改读缓冲的大小,但是不能超过最小与最大。为了使每个socket所使用的内存数最小,我这里设置默认值为4096。
      net.ipv4.tcp_wmem 用来配置写缓冲的大小。读缓冲与写缓冲在大小,直接影响到socket在内核中内存的占用。
      net.ipv4.tcp_mem 则是配置tcp的内存大小,其单位是页,而不是字节。当超过第二个值时,TCP进入 pressure模式,此时TCP尝试稳定其内存的使用,当小于第一个值时,就退出pressure模式。当内存占用超过第三个值时,TCP就拒绝分配 socket了,查看dmesg,会打出很多的日志“TCP: too many of orphaned sockets”。
      net.ipv4.tcp_max_orphans 这个值也要设置一下,这个值表示系统所能处理不属于任何进程的 socket数量,当我们需要快速建立大量连接时,就需要关注下这个值了。当不属于任何进程的socket的数量大于这个值时,dmesg就会看 到”too many of orphaned sockets”。

      另外,附上LINUX 查看tcp连接数及状态,以及状态详请,参见: http://blog.sina.com.cn/s/blog_623630d50101r93l.html

    2. 调整最大打开文件数;http://www.cnblogs.com/peida/archive/2013/02/26/2932972.html
      在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。
      lsof打开的文件可以是:
      普通文件、目录、网络文件系统的文件、字符或设备文件、(函数)共享库、管道,命名管道、符号链接、网络文件(例如:NFS file、网络socket,unix域名socket)、还有其它类型的文件,等等
      故,作为压力机,每个TCP/UDP连接都会占用一个文件打开数,此处,可能成为瓶颈。

    3. 打开进程数限制(root用户本项是无限)

      如果你对进程总数量没有特殊要求,可以不修改本选项。
      执行命令:
      ulimit -a
      查看结果:
      max user processes (-u) 16484
      如果此项可能成为瓶颈,则修改此项。

    4. 确认网卡、路由不会成为瓶颈
      此处不做详解。

    5. 确认网络带宽

      此处不做详解,查看实时带宽流量 https://help.aliyun.com/knowledge_detail/5988901.html?pos=11

    6. 压力机其他可调优的参数

      参考:http://blog.csdn.net/my_yang/article/details/45788717


    STEP2:
    以java为例:

    1. java堆内存、栈内存,理论详见:http://blog.csdn.net/qh_java/article/details/9084091
      重要的是:
      在java中每new一个线程,jvm都是向操作系统请求new一个本地线程,此时操作系统会使用剩余的内存空间来为线程分配内存,而不是使用jvm的内存。这样,当操作系统的可用内存越少,则jvm可用创建的新线程也就越少。见:http://blog.sina.com.cn/s/blog_684fe8af0100wzg5.html
      因此,可以理解为线程使用的内存,不在“使用-Xms -Xmx设置的内存”中,需要根据实际情况进行调节,不宜过大,否则能启动的线程数量越小;
      如果是maven项目,使用jemeter,且使用maven的jemeter插件,那么在POM里,jmeter插件中设置此内存大小;

      另外,附上如何计算,只考虑内存的情况下,机器理论上能打开的最大线程数:http://blog.csdn.net/feng27156/article/details/19333575
      官网查线程栈默认值(64位为1M)http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html 搜XX:ThreadStackSize

    2. maven内存

      maven本身编译的内存也不宜设置过小或过大,会影响能启动的线程数;

    3. 其他施压程序的瓶颈

      有的框架或程序,可以限制单台机器,连接到本服务的最大线程数,此配置可能成为瓶颈,比如dubbo的 actives配置(每服务消费者每服务每方法最大并发调用数)
      其他类似的配置;


    STEP3:
    找到压力机上,施压程序单进程的性能瓶颈
    如果是物理机,且并发数不大(几百到4/5千),可以忽略此条。
    除以上已知配置可能会影响压力机性能瓶颈以外,不排除其他影响压力机性能的因素,因此,在远程机器上,搭建一个mock程序,该程序什么都不做,直接返回成功。注意:mock程序部署机器物理配置最好能和压力机对等(对等时,至少部署两台),如果不能对等,部署多台,以排除部署机器的瓶颈;
    通过逐步增加线程数,观察平均响应时间和TPS,随着线程数的增加,TPS很难上升,平均响应时间明显增加的情况下,基本可以说明已经达到压力机的瓶颈,记下此时的线程数,在压测时,单台压力机最大线程数不宜超过该线程数,否则压测结果中,TPS和平均响应时间不准,压测结果不准确。


    总结:
    STEP3很重要,因为在实践中,一台8核 64G内存的机器,单进程,最大的线程数超过10000时,被测服务(20台机器做实验)的压力很难再上去,因此STEP1只能说是排除那些可能成为瓶颈的机器配置,STEP2为避免踩已知的坑,STEP3才能确认压力机的单进程施压能力到底是多少;

    转载请注明出处:
    http://blog.csdn.net/kaka1121/article/details/51496387

    展开全文
  • 分析方法软件测试中性能测试--瓶颈分析方法性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载...
  • 压力测试工具

    万次阅读 多人点赞 2018-12-20 16:06:28
    目录 1 性能测试... 2 2 压力测试(Stress Test)... 2 2.1 网站测试... 2 2.2 系统测试要求... 3 3 测试工具... 3 3.1 Webbench. 4 3.1.1 Ubuntu 下载安装... 5 3.1.2 ...

    目录

    1       性能测试... 2

    2       压力测试(Stress Test)... 2

    2.1             网站测试... 2

    2.2             系统测试要求... 3

    3       测试工具... 3

    3.1             Webbench. 4

    3.1.1         Ubuntu 下载安装... 5

    3.1.2         webbench使用... 5

    3.1.3         webbench测试结果... 5

    3.1.4         参考文档... 5

    3.2             ab(apache bench)... 5

    3.2.1         安装... 6

    3.2.2         使用... 6

    3.2.3         测试报告... 7

    3.2.4         参考文档... 8

    3.3             TcpCopy. 8

    3.3.1         TcpCopy简介... 8

    3.3.2         tcpcopy代码下载... 9

    3.3.3         境数据传递流程图... 10

    3.3.4         参考文档... 11

    3.4             LoadRunner 11

    3.4.1         LoadRunner简介... 11

    3.4.2         LoadRunner 常用术语... 12

    3.4.3         参考文档... 12

    3.5             Apache JMeter 12

    3.5.1         JMeter简介... 12

    3.5.2         下载运行... 13

    3.5.3         测试报告... 13

    3.5.4         参考文档... 15

    3.6             wrk. 15

    3.6.1         安装... 15

    3.6.2         使用... 15

    3.6.3         输出... 15

    3.7             腾讯WeTest 15

    3.7.1         WeTest简介... 15

    3.7.2         压测大师推荐的性能测试方法... 15

    3.7.3         付费规则... 16

    3.7.4         测试报告... 16

    3.7.5         参考文档... 18

    3.8             阿里云PTS. 19

    3.8.1         PTS简介... 19

    3.8.2         产品优势... 19

    3.8.3         产品功能... 19

    3.8.4         计费规则... 20

    3.8.5         测试报告... 20

    3.8.6         参考文档... 24

     

     

     

    1. 性能测试

    性能测试是利用产品、人员和流程来降低应用程序、升级程序或补丁程序部署风险的一种手段。性能测试的主要思想是通过模拟产生真实业务的压力对被测系统进行加压,验证被测系统在不同压力情况下的表现,找出其潜在的瓶颈。

    性能测试相关术语:响应时间、并发用户数、事务响应时间、吞吐量、TPS(每秒事务响应数)、性能计数器等。

    性能测试方法:负载测试、压力测试、配置测试、并发测试、可靠性测试等。

    应用领域:能力验证、规划能力、性能调优、缺陷发现。

    性能测试工具架构一般包括:虚拟用户脚本产生器(Virtual User Generator)、压力产生器(player)、用户代理(Agent)、压力调度和监控系统(Controller)、压力结果分析工具(Analysis)。

    1. 压力测试(Stress Test

    在软件测试中:压力测试(Stress Test),也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。

      1. 网站测试

    压力测试通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大的服务级别的测试。通俗地讲,压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。

    极限压力测试举例:

    1) 接收大数据量的数据文件时间;

    2) 大数据恢复时间;

    3) 大数据导入导出时间;

    4) 大批量录入数据时间;

    5) 大数据量的计算时间;

    6) 多客户机同时进行某一个提交操作;

    7) 采用测试工具软件;

    8) 编写测试脚本程序;

    9) 大数据量的查询统计时间。

    实例:

    在一个系统内,仅有一个用户登录使用相同的操作,对不同的数据量进行测试。记录下数据量和对应的资源占用率,响应时间。

      1. 系统测试要求

    数据:1万盏灯

    1. web获取1万盏灯所耗时间(大数据量的查询统计时间)
    2. 轮询获取1万盏灯比较函数所耗时间(大数据量的计算时间)
    3. Node转存数据程序所耗时间(大数据导入时间)
    4. 服务器资源的耗用(CPU)
    1. 测试工具

    软件名称

    是否开源

    简介

    webbench

    开源

    由Lionbridge公司开发,主要测试每秒钟请求数和每秒钟数据传输量,同时支持静态、动态、SSL。

    部署简单,静动态均可测试。适用于小型网站压力测试(单例最多可模拟3万并发)

    apache bench

    开源

    Apache自带的压力测试工具,主要功能用于测试网站每秒钟处理请求个数。

    多见用于静态压力测试,功能较弱,非专业压力测试工具

    tcpcopy

    开源

    基于底层应用请求复制,可转发各种在线请求到测试服务器,具有分布式压力测试功能,所测试数据与实际生产数据较为接近。

    后起之秀,主要用于中大型压力测试,所有基于 tcp的packets均可测试

    loadrunner

    付费软件/破解版本

    压力测试界的泰斗,可以创建虚拟用户,可以模拟用户真实访问流程从而录制成脚本,其测试结果也最为逼真。

    模拟最为逼真,并可进行独立的单元测试,但是部署配置较为复杂,需要专业人员才可以。

    Apache JMeter

    开源免费

    Jmeter  是一款使用Java开发的,开源免费的,测试工具, 主要用来做功能测试和性能测试(压力测试/负载测试).

    而且用Jmeter 来测试 Restful API, 非常好用。

    wrk

    开源

    https://github.com/wg/wrk

    腾讯WeTest

    付费

    腾讯WeTest出品的线上服务器压力测试服务WeTest服务器压力测试 最高可至亿级并发,实时查看性能数据报表,专家级性能优化建议。我们通常要分析的性能数据像TPS,在线人数,事务数,网络吞吐,CPU,内存,磁盘IO等性能报告里都有。

    阿里云PTS

     

    付费

    性能测试PTS(Performance Testing Service)是面向所有技术相关背景人员的云化性能测试工具,有别于传统工具的繁复,PTS以互联网化的交互,面向分布式和云化的设计,更适合当前的主流技术架构。无论是自研还是适配开源的功能,PTS都可以轻松模拟大量用户访问业务的场景,任务随时发起,免去搭建和维护成本。更是紧密结合监控类产品提供一站式监控、定位等附加价值,高效检验和管理业务性能。

     

      1. Webbench

    Webbench是有名的网站压力测试工具,它是由 Lionbridge公司(http://www.lionbridge.com)开发。

    Webbech能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webBech的标准测试可以向我们展示服务器的 两项 内容:每秒钟相应请求数和每秒钟传输数据量。webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进 行测试的能力。还有就是他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试。

        1. Ubuntu 下载安装

    1、安装依赖包CTAGS

    apt-get install ctags

    2、安装 Webbench

    下载程序: webbench-1.5.tar.gz

    wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz

    make

    sudo make install

        1. webbench使用

    #webbench -? (查看命令帮助)

    常用参数 说明,-c 表示客户端数,-t 表示时间

    测试实例:

    #webbench -c 500  -t  30   http://127.0.0.1/phpionfo.php

    测试静态图片:

    #webbench -c 500 -t 30 http://127.0.0.1/test.jpg

        1. webbench测试结果

    分析:每秒钟响应请求数:3230 pages/min,每秒钟传输数据量11614212 bytes/sec.

        1. 参考文档

    https://www.oschina.net/p/webbench

      1. ab(apache bench)

    ab 命令会创建很多的并发访问线程,模拟多个访问者同时对某一 URL 进行访问,可用来测试 Apache 的负载压力,也可以测试 Nginx、lighthttp、IIS 等其它 Web 服务器的压力。

        1. 安装

       Unix 安装:yum install httpd

       Windows安装:下载 http://pan.baidu.com/s/1mifnlUS 

       在安装目录 bin下可以看到 ab.exe。

        1. 使用

        为了避免因为网络原因而导致服务器压力测试结果不准确,一般可以用 ab -n 100 -c 50 http://127.0.0.1/index.php 来测试自己服务器Web性能。所有 ab 命令的组成遵循此结构:   ab [options] [full path to web document] 。

         ab -n 1000 -c 10 http://www.qq.com/

        “-n”表示:每次请求数,默认不能超过1024个,“-c”表示:1个请求的并发连接数,默认最大不能超过50000

        1. 测试报告

        1. 参考文档

    https://blog.csdn.net/Jerome_s/article/details/47030671

     

      1. TcpCopy
        1. TcpCopy简介

    TcpCopy顾名思义,就是一个可以将tcp流量复制的工具(其实也可以复制UDP)。有了这样一个工具,我们就可以真实的复制线上流量,然后将这些流量复制到我们的测试服务器上。这样就可以很容易模拟线上真实用户的访问,做一些功能上的,性能上的测试。而且经过实际测试发现TCPCopy对线上机器的资源消耗也是极低的。而请求复制,一般分为两类:1)基于应用层的请求复制2)基于底层数据包的请求复制。

    Tcpcopy是由网易技术部王斌(http://weibo.com/tcpcopy)在王波的工作基础上开发的,2011年9月开源的项目(https://github.com/session-replay-tools/tcpcopy  https://github.com/wangbin579/tcpcopy )

        1. tcpcopy代码下载
          1. Online Server 上的操作

     

    下载并安装 tcpcopy 客户端;

    git clone http://github.com/session-replay-tools/tcpcopy

    ./configure

    make && make install

     

    安装完成后的各结构目录:

    Configuration summary

     

      tcpcopy path prefix: "/usr/local/tcpcopy"

      tcpcopy binary file: "/usr/local/tcpcopy/sbin/tcpcopy"

      tcpcopy configuration prefix: "/usr/local/tcpcopy/conf"

      tcpcopy configuration file: "/usr/local/tcpcopy/conf/plugin.conf"

      tcpcopy pid file: "/usr/local/tcpcopy/logs/tcpcopy.pid"

      tcpcopy error log file: "/usr/local/tcpcopy/logs/error_tcpcopy.log"

     

    运行 tcpcopy 客户端,有几种可选方式:

    ./tcpcopy -x 80-172.16.***.52:80 -s 172.16.***.53 -d       #全流量复制

    ./tcpcopy -x 80-172.16.***.52:80 -s 172.16.***.53 -r 20 -d  #复制20%的流量

    ./tcpcopy -x 80-172.16.***.52:80 -s 172.16.***.53 -n 2 -d    #放大2倍流量具体的生产环境和镜像环

     

          1. Test Server 上的操作:

    添加静态路由:

    route add -net 0.0.0.0/0 gw 172.16.***.53

     

          1. Assistant Server 上的操作:

    下载并安装 intercept 服务端;

    git clone http://github.com/session-replay-tools/intercept

    ./configure

    make && make install

     

    安装完成后的各结构目录:

    Configuration summary

      intercept path prefix: "/usr/local/intercept"

      intercept binary file: "/usr/local/intercept/sbin/intercept"

      intercept configuration prefix: "/usr/local"

      intercept configuration file: "/usr/local/intercept/"

      intercept pid file: "/usr/local/intercept/logs/intercept.pid"

      intercept error log file: "/usr/local/intercept/logs/error_intercept.log"

     

    运行 intercept 服务端;

    ./intercept -i eth0 -F 'tcp and src port 80' -d

        1. 境数据传递流程图

    对照上图5,再简单解释一下工作原理:

      1. TCPcopy 从数据链路层 copy 端口请求,然后更改目的 ip 和目的端口。
      2. 将修改过的数据包传送给数据链路层,并且保持 tcp 连接请求。
      3. 通过数据链路层从 online server 发送到 test server。
      4. 在数据链路层解封装后到达 nginx 响应的服务端口。
      5. 等用户请求的数据返回结果后,回包走数据链路层。
      6. 通过数据链路层将返回的结果从 test server 发送到 assistant server。注:test server 只有一条默认路由指向 assistant server。
      7. 数据到达 assistant server 后被 intercept 进程截获。
      8. 过滤相关信息将请求状态发送给 online server 的 tcpcopy,关闭 tcp 连接。
        1. 参考文档

    https://github.com/session-replay-tools/tcpcopy

    https://sq.163yun.com/blog/article/182257750483230720

    https://blog.csdn.net/u012928324/article/details/76216178

    http://www.cnblogs.com/zhengyun_ustc/p/tcpcopy.html

     

      1. LoadRunner
        1. LoadRunner简介

    LoadRunner是一种预测系统行为和性能的负载测试工具,通过模拟实际用户的操作行为进行实时性能监测,来帮助测试人员更快的查找和发现问题。LoadRunner适用于各种体系架构,能支持广泛的协议和技术,为测试提供特殊的解决方案。企业通过LoadRunner能最大限度地缩短测试时间,优化性能并加速应用系统的发布周期。

    LoadRunner提供了3大主要功能模块,既可以作为独立的工具完成各自的功能,又可以作为LoadRunner的一部分彼此衔接,与其他模块共同完成软件性能的整体测试,这3大模块分别是:

    1. Virtual User Generator —— 用于录制性能测试脚本
    2. LoadRunner Controller—— 用于创建、运行和监控场景
    3. LoadRunner Analysis —— 用于分析性能测试结果
        1. LoadRunner 常用术语

    1. 场景(Scenario:即测试场景,在LoadRunner的Controller部件中,可以设计与执行用例的场景,设置场景的步骤主要包括:在Controller中选择虚拟用户脚本、设置虚拟用户数量、配置虚拟用户运行时的行为、选择负载发生器(Load Generator)、设置执行时间等。

    2. 负载发生器(Load Generator):用来产生压力的机器,受Controller控制,可以使用户脚本在不同的主机上执行。在性能测试工作中,通常由一个Controller控制多个Load Generator以对被测试系统进行加压。

    3. 虚拟用户(Virtual User/Vuser):对应于现实中的真实用户,使用LoadRunner模拟的用户称为虚拟用户。性能测试模拟多个用户操作可以理解为这些虚拟用户在跑脚本,以模拟多个真正用户的行为。

    4. 虚拟用户脚本(Vuser script):通过Vuser Generator录制或开发的脚本,这些脚本用来模拟用户的行为。

    5. 事务(Transaction):测试人员可以将一个或多个操作步骤定义为一个事务,可以通俗的理解事务为“人为定义的一系列请求(请求可以是一个或者多个)”。在程序上,事务表现为被开始标记和结束标记圈定的一段代码区块。Loadrunner根据事务的开头和结尾标记,计算事务响应时间、成功/失败的事务数。

    6. 思考时间(Think Time):即请求间的停顿时间。实际中,用户在进行一个操作后往往会停顿然后再进行下一个操作,为了更真实的模拟这种用户行为而引进该概念。在虚拟用户脚本中用函数lr_think_time()来模拟用户处理过程,执行该函数时用户线程会按照相应的time值进行等待。

    7. 集合点(Rendezvous)设集合点是为了更好模拟并发操作。设了集合点后,运行过程中用户可以在集合点等待到一定条件后再一起发后续的请求。集合点在虚拟用户脚本中对应函数lr_rendezvous() 。

    8. 事务响应时间:事务响应时间是一个统计量,是评价系统性能的重要参数。定义好事务后,在场景执行过程和测试结果分析中即可以看到对应事务的响应时间。通过对关键或核心事务的执行情况进行分析,以定位是否存在性能问题。

        1. 参考文档

    https://zhuanlan.zhihu.com/p/24812449

      1. Apache JMeter
        1. JMeter简介

    JMeter 是 Apache 组织的开放源代码项目,它是功能和性能测试的工具(压力测试/负载测试)。而且用Jmeter 来测试 Restful API, 非常好用。它可以用来:

      1. 生成测试负载
      2. 测试性能
      3. 测试功能性的行为

    它包括对 HTTP(S), JDBC, JMS, FTP, LDAP,TCP,本机调用等协议的支持,也可以与用户编写的代码轻松扩展。

        1. 下载运行

    下载地址http://jmeter.apache.org/  点击下载,Windows环境下,下载后解压,在bin目录中,双击 jmeter.bat运行。

        1. 测试报告

    Web项目测试报告中主要三种比较常见的报表,【聚合报告】【查看结果树】【用表格查看结果】

    聚合报告:能显示测试次数、平均请求耗时、请求耗时百分百、最小、最大请求耗时、错误率、吞吐量、数据量等参数。

     

    查看结果树:能查看每个请求的取样器结果、请求、详细返回结果

     

    用表格查看结果:通过请求顺序查看请求地址,耗时、状态、数据量、延迟、连接耗时等信息。

     

        1. 参考文档

    官方网站:http://jmeter.apache.org/

    参考文档:https://www.cnblogs.com/ios9/p/7644951.html

      1. wrk
        1. 安装
        2. 使用

    wrk -t12 -c400 -d30s http://127.0.0.1:8080/index.html

        1. 输出

    https://github.com/wg/wrk

     

      1. 腾讯WeTest
        1. WeTest简介

    腾讯WeTest出品的线上服务器压力测试服务WeTest服务器压力测试 最高可至亿级并发,实时查看性能数据报表,专家级性能优化建议对于简单接口测试和评估容量的,只需要输入url和配置下人数的参数,就可以在一两分钟内快速发起压力。我们通常要分析的性能数据像TPS,在线人数,事务数,网络吞吐,CPU,内存,磁盘IO等性能报告里都有。报告是可视化的图表形式展现的。亦可以自己编写机器人,深度结合自身业务场景进行压测。其他简单的协议测试或是稳定性测试,也可满足。

        1. 压测大师推荐的性能测试方法

    接口测试:单接口的性能评估,找到整体的性能瓶颈,有的放矢地进行优化。

    场景测试:通过设计测试用例模拟实际现网业务逻辑,来测试不同的业务场景下性能是否达标的一种测试类型。

    容量测试:容量测试的目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值,系统在其极限状态下没有出现任何软件故障或还能保持主要功能正常运行。

    稳定性测试:通过10小时以上的持续测试来了解业务后台的性能状况,测试后台的健壮性。用于验证服务器长期运行的状况,是十分重要的性能测试类型。

        1. 付费规则

     

        1. 测试报告

     

        1. 参考文档

    https://wetest.qq.com/product/gaps

    https://wetest.qq.com/gaps/ConfigRunning?projectid=66bb83e7374dda551afc026c97707efe&i_testid=01265a8ef8c453e2557a9147c5a85e0e

      1. 阿里云PTS
        1. PTS简介

    性能测试PTS(Performance Testing Service)是面向所有技术相关背景人员的云化性能测试工具,孵化自阿里内部平台。有别于传统工具的繁复,PTS以互联网化的交互,面向分布式和云化的设计,更适合当前的主流技术架构。无论是自研还是适配开源的功能,PTS都可以轻松模拟大量用户访问业务的场景,任务随时发起,免去搭建和维护成本。更是紧密结合监控类产品提供一站式监控、定位等附加价值,高效检验和管理业务性能。

        1. 产品优势

    构建足够简单:PTS原生交互0编码支持复杂场景,同样支持开源JMeter脚本进行原生引擎压测或者PTS引擎压测

    流量快速可控:压测任务30秒内发起,同时具备脉冲能力,中途调速即时生效更适合难以预计的压测过程

        1. 产品功能
    1. 压测场景构建

    支持有序串行和并行编排压测API,参数化上支持数据文件、系统函数、字符串、出参和彼此之间的组合,对 cookie 支持非常友好,还有丰富的指令扩展场景的仿真度。调试功能可以便捷地进行复杂场景的数据流向的校验。相应的资源包配套有极易上手的云端录制,非常便于移动端的请求抓取和到压测场景的一键导入。

    1. 压测流量控制

    支持并发和RPS模式,分钟内快速启动压测。极低的误差,同时支持自动和纯手动模式,压测流量的调整秒级生效,支持最高千万级的流量瞬时脉冲。

    1. 监控和压测报告

    陆续丰富中的监控指标,实时监控和报告中包括但不局限于各 API 的并发、TPS、响应时间和采样的日志,请求和响应时间还有不同的细分数据,其他监控能力(如云监控)陆续集成中。

    1. 对开源友好

    除了强大的自研功能,对于开源JMeter的支持也很友好,支持JMeter脚本转化为PTS压测,同样支持原生JMeter引擎进行压测。

        1. 计费规则

    https://www.aliyun.com/price/product?spm=a2c4g.11186623.2.11.75f0665dVZs1GI#/pts/detail

        1. 测试报告

    https://help.aliyun.com/document_detail/65304.html?spm=a2c4g.11186623.6.580.fae11aacuS2TvI

    压测场景概览:压测报告第一部分显示整个压测场景的相关业务指标。

    串联链路概览:压测报告的概览页,显示整个场景下所有的串联链路和 API 的压测情况;如添加了云监控产品,ECS、SLB 或者 RDS,您也可以看到这些产品在压测期间的性能表现。

    串联链路业务详情:压测报告的明细>业务详情页签下,显示全场景视图和串联链路中单个 API 的业务详情,包括请求(TPS)视图、业务(TPS)视图、并发数、响应时间和指令详情等。对相关指标的解读,参考测试指标。

    ECS 监控详情:如添加了云监控 ECS,在压测报告的明细页,可查看整个压测时间内 ECS 的监控数据。具体解读,请参考云监控的监控项说明。

    SLB 监控详情:如添加了云监控 SLB,在压测报告的明细页,可查看整个压测时间内 SLB 的监控数据。关于 SLB 监控详情解读,请参考负载均衡监控。

    ARMS 监控详情:如添加了 ARMS 监控,在压测报告的明细页,可查看整个压测时间内 ARMS 基于应用接口的监控数据。关于 ARMS 监控详情解读,请参考 ARMS 应用接口调用监控。

        1. 参考文档

    https://www.aliyun.com/product/pts/?utm_content=se_1000101958

    https://help.aliyun.com/document_detail/29262.html?spm=a2c4g.11186623.6.542.fae11aacEwmNN6

     

     

     

    展开全文
  • 关于内存泄漏,相信大家都不陌生,压力测试中经常会出现,本人最近在做一个压力测试中就着实体会了一下,上来分享分享。内存泄露是指程序中间动态分配了内存,但是在程序结束时没有释放这部分内存,从而造成那一部分...
  • 软件性能测试(并发负载压力测试分析分析原则:具体问题具体分析(这是由于不同的应用系统,不同的测试目的,不同的性能关注点)查找瓶颈时按以下顺MILY:宋体;mso-ascii-font-family:"TimesRoman?;mso-hansi-font-...
  • Jmeter压力测试实验 1.课程设计目的: 1)学会部署服务器环境和网站搭建 2)学会使用Jmeter做对网站服务器做压力测试 3)测试服务器的性能瓶颈 3)评估影响服务器性能的因素 2.课程设计软件: 1) Tomcat 2) ...

    Jmeter压力测试实验

    1.课程设计目的:

    1)学会部署服务器环境和网站搭建

    2)学会使用Jmeter做对网站服务器做压力测试

    3)测试服务器的性能瓶颈

    3)评估影响服务器性能的因素

     

    2.课程设计软件

    1) Tomcat

    2) Jmeter

     

    3.课程设计内容

    1.配置JDK环境

    2.配置Tomcat环境

    3.Tomcat服务器的搭建及测试

    4.局域网服务器的访问测试

    5.安装Jmeter软件

    6.使用Jmeter测试本机及局域网服务器性能

    7.使用Jmeter测试本机及局域网服务器瓶颈

    8.测试不同参数下服务器的性能表现

    9.分析影响服务器性能的因素

    10.对服务器部署和访问,给出合理建议

    4.具体课程设计实验:

    jdk与tomcat环境变量的配置

    使用命令行,输入startup,启动Tomcat。

     

     

    当出现如下窗口界面,表示Tomcat启动成功。

     

    查看Tomcat服务器,在浏览器中输入localhost:8080,如果能看到以下页面,表明服务器配置成功。

     

    将自己写的网页文件夹放到D:\apache-tomcat-8.5.35\webapps\test (这个是我自己在网上下的源代码)

    然后在浏览器中输入 http://localhost:8080/test/index.html,出现你做的网页,表示网页访问成功。

     

    1. 用Jemter进行压力测试。

    首先,打开Jmeter。添加线程组。

     

    线程数设定为50,循环次数设为10

     

    添加并设置http请求默认值

     

    添加并设置http请求

     

    4.运行并查看结果。

    设置监听器,用表格查看结果。

     

     

    表格结果界面

    分析影响服务器性能的因素

       1、内存 2、硬盘 3、处理器 4、网络

    对服务器部署和访问,给出合理建议

    开启浏览器的缓存,这样读取存放在webapps文件夹里的静态内容会更快,大大推动整体性能。每当开机时,Tomcat服务器应当自动地重启。一般情况下HTTPS请求会比HTTP请求慢。如果我们想要更好的安全性,即使慢一点我们还是要选择HTTPS。

    展开全文
  • 文章目录系统测试概述功能测试性能测试负载测试压力测试性能测试、压力测试、负载测试的关系兼容性测试安全测试健壮性测试配置测试可用性测试文档测试 系统测试概述 系统测试的定义 将已经集成好的软件系统,作为...
  • 压力测试分析

    2020-05-28 11:30:36
    压力测试的含义 个人理解:压测是性能测试种的一个子集,压测可粗略地理解为:单位时间内压测对象处理请求快慢的一种表现方式;在需求文档规定的单位时间内,可以并发处理完所有的请求且不报错;超出既定请求界限,...
  • jmeter-压力测试报告-超细,Jmeter性能测试工具使用总结
  • 在论坛混了多日,发现越来越多的性能测试工程师基本上都能够掌握利用软件测试工具来作负载压力测试,但多数人对怎样去分析工具收集到的测试结果感到无从下手,下面我就把个人工作中的体会和收集到的有关资料整理出来...
  • 性能测试瓶颈分析

    万次阅读 2014-07-06 16:59:15
    (7)性能测试瓶颈分析   性能瓶颈分析构成图:
  • 1.之前有做过性能测试吗,做过的话是做了那些呢 这个可以说使用常用的工具(jmeter,loadrunner)来完成,也可以说用的第三方软件(这种普遍都是傻瓜型软件,直接装好就能用,腾讯gt等)。当然不知说这些,还要说在...
  • 性能测试过程中遇到瓶颈,怎么办 总结下这些年遇到最常见的性能瓶颈,响应时间不达标 一般测试:这里显示数据怎么这么慢? 开发:… 记住,测试不单单要发现问题,还要定位问题出现的原因,找出bug只是测试的责任,...
  • 木桶原理应用在系统分析中,即系统的最终性能取决于系统中性能表现最差的组件,为了提升系统整体性能,对系统中表现最差的组件进行优化可以得到最好的效果。 在网站系统中,用户的访问请求到达服务器,然后服务器...
  •  第一部分,测试执行  先看一图,再看下文  这个当然就是压力过程中带宽的使用率了,我们的带宽是1Gbps的,合计传输速率为128MB/s,也正因为这个就让我越来越疑惑了,不过通过压力过程中的各项数据我又不得不...
  • jmeter(压力测试)指标分析

    千次阅读 2019-09-17 10:01:54
    压力测试 压力测试分两种场景:一种是单场景,压一个接口的;第二种是混合场景,多个有关联的接口。 压测时间,一般场景都运行10-15分钟。如果是疲劳测试,可以压一天或一周,根据实际情况来定。 压测任务需求...
  • 如果压力机是win7,那么默认的win7允许的连接是5个,所以需要通过工具修改半连接数的限制。而windonws server则没有这个问题。 6.磁盘瓶颈的判断 在linux中,通过iostat命令可以查看磁盘的一些数据,如果Pages ...
  • 压力测试工具Pylot.rar

    2019-10-19 10:28:52
    今天要说的Pylot,就是一款适合在Windows电脑上运行的服务器压力测试程序,这是一款开源的用以测试 Web Service性能和扩展性的工具,它运行HTTP负载测试,这对于制定容量计划、确定基准点、分析系统瓶颈以及系统调优...
  • Kafka压力测试

    千次阅读 2019-08-07 23:27:11
    Kafka压测时,可以查看到哪个地方出现了瓶颈(CPU,内存,网络IO)。一般都是网络IO达到瓶颈。 使用的两个脚本为kafka-consumer-perf-test.sh和kafka-producer-perf-test.sh,脚本的位置在$KAFKA_HOME/bin目录下。 ...
  • 软件测试性能测试分析软件测试软件测试性能测试分析性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试...压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获
  • lr瓶颈分析

    2018-05-23 08:59:26
    性能测试的概念是什么,基本目的是什么,我想大家都基本清楚,不作详述,总之,性能测试只是测试过程中的一种方式,帮助我们的功能更好的运行,如果功能测试是可用,易用,满足需求、用户使用为目的,性能测试无非...
  • Jmeter接口测试+压力测试

    万次阅读 多人点赞 2017-05-14 14:01:50
    jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是...
  • 软件测试面试题汇总

    万次阅读 多人点赞 2018-09-27 12:31:09
    转载自: ... 软件测试面试题汇总 测试技术面试题 ...........................................................................................................
  • 性能测试分析之带宽瓶颈的疑…

    千次阅读 2015-05-30 11:31:23
    原文地址:性能测试分析之带宽瓶颈的疑惑作者:Amy小太阳 第一部分, 测试执行 先看一图,再看下文 这个当然就是压力过程中带宽的使用率了,我们的带宽是1Gbps的,合计传输速率为128MB/s,也正因为这个就让我...
  • 接触性能测试一年多了,在机房也为多个系统做过负载和压力测试,还原了上百人的测试操作,但是对于LR测试结果的分析一直都是一个瓶颈,偶然机会让我遇到了这篇文章,一名专业测试人员的系列博客,让我对于性能测试的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,577
精华内容 15,430
关键字:

压力测试瓶颈分析