性能测试
大型网站压力测试及优化方案
测试工具
JMeter
LoadRunner
其他测试工具
Siege是一款开源的压力测试工具
TCPCopy是一种请求复制(所有基于tcp的packets)工具(流量复制)
定位性能瓶颈,找出系统存在的问题
(1)磁盘I/O及文件操作
(2)网络操作
(3)内存、CPU
(4)高并发下的上下文切换及锁竞争等
(5)数据库插入、查询
服务器系统分析
测试——性能测试总结
1、对于被系统架构的认识:一般有反向代理服务器+应用服务器+数据库服务器+文件服务器等
2、对于接口内部逻辑处理的认识:是否内调其他服务接口,做到整个链路的理解
3、Linux系统工具的使用:top、htop、sar、vmstat、nload、pidstat、ifconfig等
4、JDK内置命令的使用:jstat、jmap、jhat、jstack、jps等
5、第三方监控工具使用:Trofile、Jprofile、PinPonit
一个Web请求
Web性能测试的部分概况一般来说,一个Web请求的处理包括以下步骤:
(1)客户发送请求
(2)web server 接受到请求,进行处理;
(3)web server 向DB获取数据;
(4)web server生成用户的object(页面),返回给用户。给客户发送请求开始到最后一个字节的时间称为响应时间(第三步不包括在每次请求处理中)。
性能指标
1、并发用户数:同一时刻与服务器进行了交互的在线用户数量。并发数反映了软件系统的并发处理能力,和吞吐量不同的是,它大多占用套接字、句柄等操作系统资源。
2、响应时间:
响应时间就是用户感觉到软件系统为其服务所消耗的时间。对于网站系统来说,响应时间就是从一个页面计时开始,到这个页面完全在浏览器里展现计时结束的这一段时间间隔。看起来很简单,但其实在这段响应时间内,软件系统在幕后经过了一系列的处理工作,贯穿了整个系统节点。根据“管辖区域”的不同,响应时间可以细分为:服务端响应时间——这个时间指的是服务器完成交易请求执行的时间,不包括客户端的反应。
网络响应时间——这是网络硬件交易请求和交易结果所耗费的时间。
客户端响应时间——这是客户端在构建请求和展现交易结果时所耗费的时间。对于普通的瘦客户端Web应用来说,这个时间很短,通常可以忽略不计;但是对于胖客户端的Web应用来说,从而行成系统的瓶颈,这是要注意的一个地方。3、吞吐量、事务数:对于软件系统来说,“吞”进去的是请求,“吐”出来的是结果,而吞吐量就是系统处理能力。具体来说,就是指软件系统在单位时间内能够处理多少个事务、请求、单位数据等。
4、点击数:每秒发送的HTTP请求的数量。
5、资源利用率:对不同资源的使用程度,如CPU的占用率、内存的使用率、磁盘的读写指标、网络的占用情况等。资源利用率通常以占用最大值的百分比 n %来衡量。
LoadRunner性能测试样例分析](https://www.cnblogs.com/zhangyublogs/p/4943734.html)
从结果摘要、并发数、平均事务响应时间、每秒点击数、业务成功率、系统资源、网页细分图、Web服务器资源、数据库服务器资源等几个方面分析
从外部看,性能测试主要关注如下四个指标:
1、吞吐量:每秒钟系统能够处理的请求数、任务数。
2、响应时间:服务器处理一个请求或一个任务的耗时。
3、错误率:一批请求中结果出错的请求所占比例。
4、带宽:每秒从服务器端接收到的数据量(KB/s)再回过头来看jmeter的聚合报告,以上4个指标均有体现,下面我具体来分析下:
1、响应时间:聚合报告中包含Average、Median、90%Line、95%Line、99%Line、Min、Max四个时间指标,它们的值越小效果越好,表示接口响应越快。但是在实际工作中我们一般会关注90%Line这个值,表示90%的响应时间是小于43ms,Average对应的平均响应时间参考意义不大,一般我们不参考这个值。
2、吞吐量:在聚合报告中是指Throughput这项(即TPS),表示服务器分秒处理请求数或任务数。该值越大越好,表示服务器处理能力越强。
3、错误率:聚合报告中是指Error%(错误率=错误的请求的数量/请求的总数),错误率越低越好,为0表示没有异常请求。对于一般业务来说错误率要在万分之一以下。考虑到不同业务的区别,这个万分之一的标准可能会有变化。
4、带宽:在聚合报告中指Recived(KB/s),表示从服务器端接受返回数据所占网络带宽。这个值一般要求越小越好,越小占用带宽越小,间接的表示服务器端返回数据较小。一般内网环境也就是千兆带宽,如果该值过大时,需要考虑优化。
前端性能优化
1减少请求数量
2减小资源大小
3优化网络连接
4优化资源加载
5减少重绘回流
6使用性能更好的API
7构建优化
服务器性能优化
HTML静态化
图片服务器分离
数据库集群、库表散列
缓存
镜像
负载均衡
硬件四层交换
软件四层交换
性能测试监控命令
Windows自带性能监控工具Perfmon使用介绍
(转)Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm 推荐:jconsole jstat
管理员必备的20个Linux系统监控工具
Linux性能常用命令如下:
| 命令 | 命令功能说明 |
|---|---|
| top | top命令用于实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。 |
| htop | htop是一个Linux下的交互式的进程浏览器,可以用来替换Linux下的top命令。 |
| vmstat | vmstat命令,用来获得有关进程、虚存、页面交换空间及 CPU活动的信息。这些信息反映了系统的负载情况;不足之处是无法对某个进程进行深入分析。 |
| iostat | iostat工具将对系统的磁盘操作活动进行监视。不能对某个进程进行深入分析,仅对系统的整体情况进行分析。 |
| dstat | dstat是一个用来替换vmstat、iostat、netstat、nfsstat和ifstat这些命令的工具,是一个全能系统信息统计工具。其结果可以保持到csv文件,使用脚本或第三方工具对性能进行分析利用(如通过监控平台监控,也可以保持到数据库)。 |
| glances | glances工具可以在一个终端窗口下,展现许多系统信息,如CPU,负载,磁盘I/ O,网络,内存,进程,挂载等等信息。(不用LR自动的监控工具,在监控linux资源的时候,要依赖一个叫rpc的服务,不稳定,经常获取不到监控的数据) |
| sar | sar是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。 sar命令集 |
| tsar | tsar是淘宝自己开发的一个采集工具(类似于sar工具),主要用来收集服务器的系统信息(如cpu,io,mem,tcp等),以及应用数据(如squid haproxy nginx等)。收集到的数据存储在磁盘上,可以随时查询历史信息,输出方式灵活多样,另外支持将数据存储到mysql中,也可以将数据发送到nagios报警服务器。 |
| nload | nload eth0 ,可以查看第一网卡的流量情况,显示的是实时的流量图 nload -m 可以同时查看多个网卡的流量情况。 |
| 文档:性能测试linux命令(简).doc |
工具
Prometheus监控
阿里云Prometheus监控服务
Centos7安装Promethus(普罗米修斯)监控系统完整版
监控Cacti/Nagios/Zabbix/centreon/Ganglia之抉择
监控三剑客<cacti、nagios、zabbix>
Cacti/Nagios/Zabbix/centreon/Ganglia之抉择
主要对流量及主机在线状态监控软件 caciti
能对服务器的关键服务及进程进行监控的软件 nagios
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

nmon
ab
(总结)Web性能压力测试工具之ApacheBench(ab)详解
它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。ab命令对发出负载的计算机要求很低,既不会占用很高CPU,也不会占用很多内存,但却会给目标服务器造成巨大的负载,其原理类似CC攻击。可能造成目标服务器因资源耗完,严重时甚至导致死机。
webBench
(总结)Web性能压力测试工具之WebBench详解
压力测试是一项很重要的工作。比如在一个网站上线之前,能承受多大访问量、在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验。webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每秒钟传输数据量。
http_load
http_load压力测试
http_load是基于linux平台的性能测试工具,它体积非常小,仅100KB。它以并行复用的方式运行,可以测试web服务器的吞吐量与负载,web页面的性能。主要会考虑这“fetches/sec、msecs/connect ”两个项的结果,即服务器每秒能够响应的查询次数来衡量性能指标。
参考文章:
性能测试-基础篇 --提升方向
性能测试
大型网站性能测试方案的制定与实施(1-4)
https://www.jianshu.com/p/96cb02e70d3f
https://www.jianshu.com/p/eb6d4f06f9e7
https://www.jianshu.com/p/9878c2cfd88f
https://www.jianshu.com/p/2207a53ab3f5
全链路压测经验
https://www.jianshu.com/p/7fa281e4b03f
文集:
测试书籍
零成本实现web性能测试:基于apache jmeter.pdf
loadrunner
LoadRunner-常用的函数
LoadRunner函数小全
LoadRunner函数大全之中文解释(文档)
1.1.1.事务相关
1.1.1.1. lr_start_transaction/lr_end_transaction
功能:事务开始/结束标记。
1.1.1.2. lr_think_time
功能:模拟思考时间,即等待时间。
1.1.1.3. lr_rendezvous
功能:在Vuser脚本中设置集合点。
1.1.2.参数化/关联
1.1.2.1.lr_save_string/lr_save_int
功能:将某一字符串/整型保存为参数。
1.1.2.2.web_reg_save_param
功能:在服务器返回的文本中查找一个或者多个字符串,并将搜索到的字符串值保存在参数中。
1.1.2.3.lr_save_searched_string
功能:在某一个字符缓冲区中搜索指定的字符串,并将搜到的字符串保存在参数中。
1.1.2.4.lr_save_datetime
功能:将时间保存为参数。
1.1.2.5. web_save_timestamp_param
功能:将当前时间戳保存为参数。
1.1.2.6.lr_eval_string
功能:将某一字符串中包含的所有参数替换为真实值,并返回替换后的字符串。
1.1.3.验证点
1.1.3.1.web_reg_find
功能:在HTML文档中查找指定的字符串。
1.1.3.2. web_image_check
功能:判断某一个图片是否存在HTML页面中。
1.1.4.日志输出
1.1.4.1. lr_output_message
功能:将VUser的消息打印到日志文件和输出窗口中,打印的消息带有脚本行信息。
1.1.4.2. lr_vuser_status_message
功能:将VUser的消息输出到场景运行的VUser状态窗口。
1.1.5.其它实用函数
1.1.5.1. lr_get_vuser_ip
功能:获得VUser的IP地址。
1.1.5.2. lr_load_dll
功能:加载外部DLL。
性能测试常见技巧
遇到事务与集合点放置顺序问题时,需要将集合点插在开始事务之前。
待处理
文集
https://www.cnblogs.com/qmfsun/category/470610.html
https://blog.csdn.net/he_jian1/category_879593.html
https://www.cnblogs.com/zhuzhubaoya/category/875715.html?page=1
https://www.cnblogs.com/zhongyehai/category/1365029.html?page=1

浙公网安备 33010602011771号