![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
性能测试
datuzijean
鸡是蛋进行基因延续的工具。
展开
-
性能测试分享与成长计划(一)
学习目标:性能测试指标性能测试工具性能测试场景设计性能测试常见问题及其定位性能调优技术架构和业务架构匹配分析性能测试报告学习内容:基础指标:TPS、QPS、RPS、EPS、ART、持续时间、并发、带宽、CPU、内存、磁盘I/O、磁盘存储、GPU、显存学习时间:小周周六下午15:00-16:00学习产出: 技术笔记 1 遍...原创 2022-05-28 16:07:11 · 787 阅读 · 0 评论 -
高并发架构设计原则-缓存
缓存大多存在于读服务中来对抗流量。客户端浏览器缓存、客户端缓存客户端网络代理服务器开启缓存广域网使用代理服务器(含CDN)、使用镜像服务、使用P2P技术源站及源站网络接入层缓存、应用层缓存、分布式缓存、静态化和伪静态化、操作系统缓存...原创 2020-06-15 20:43:54 · 257 阅读 · 0 评论 -
高并发架构设计原则-数据异构
什么是数据异构呢?简单举个例子,有一张基础表含有商品单格、数量、仓库等信息,有业务场景查询只需要查单价和数量,然而其他信息都不关心,可以把这部分数据从基础表中复制出来单独成表;以此类推,异构既可以是分表也可以是合表。目的是让业务使用数据更方便和快捷。实用中基本步骤如下:数据异构 接收数据,然后原子化存储到合适的存储引擎。数据聚合 把“有用“的数据聚合成一张表或者一对keyvalue前端展示 通过一次货少量几次调用拿到所需要的数据...原创 2020-06-15 20:31:25 · 460 阅读 · 0 评论 -
高可用、高并发的设计原则概括
最近前辈推荐看架构相关的一些书籍,有些收获不知道该怎么形容,索性在回头回忆这些内容的时候想到哪写到哪,作为笔记分享吧。高可用:负载均衡、限流、熔断、隔离、降级、超时与重试机制、回滚机制、压测与预案。高并发:缓存、池化、异化、队列、扩容等(这个等.......)。...原创 2020-06-13 22:16:07 · 267 阅读 · 0 评论 -
高并发架构设计原则-消息队列
消息队列作用解耦、消峰、异步解耦有ABCD四个系统,A系统有一条数据需要传给BCD,A系统不仅要关心数据发送还要处理数据发送BCD其中产生的异常,如B挂掉了怎么办,A是否重传?如果使用消息队列,A系统只负责发送消息到消息队列,BCD消费消息队列中的消息即可,A系统不关心消息发给谁了,谁消费失败了等等问题。消峰类似于地铁排队?(暴露了。。。),10000万个并发请求直接到服务器,服务器最大处理能力2000个每秒,那样极限情况下会有8000个请求在等待征用系统资源,导致请求超时系统资源紧张、原创 2020-05-28 22:10:56 · 406 阅读 · 0 评论 -
高并发架构设计原则-服务设计思考过程
进程内服务->单机远程服务->集群手动注册服务->自动注册和发现服务->服务的分组/隔离/路由->服务治理和限流/黑白名单。进程内服务单机软件,如office办公软件、单机游戏等等单机远程服务客户量和访问量少、服务压力不大单机可以支持的情况下集群手动注册服务集群部署,但是手动配置Nginx进行服务器的扩展自动注册和发现服务如Dubbo使用zookeeper服务的分组/隔离/路由防止系统访问量过大导致整体服务挂掉、需要对不同的调用方提供相应原创 2020-05-27 16:09:34 · 244 阅读 · 0 评论 -
高并发架构设计原则-无状态
无状态:服务端不保存任何客户端请求者信息,客户端的每次请求必须具备自述信息,通过这些信息识别客户端身份。优点-客户端请求不依赖服务端的信息,任何多次请求不需要必须访问到同一台服务,这样为服务器横向扩展提供了条件。有状态:服务端需要记录每次绘画的客户端信息,从而识别客户端身份,根据客户端身份进行对请求的处理,如session。缺点-服务端保存大量客户端信息,增加服务端压力。-服务端保存用户状态,无法进行水平拓展。-客户端请求依赖服务端,多次请求必须访问同一台服务器。有状态无原创 2020-05-26 22:47:34 · 842 阅读 · 0 评论 -
Linux添加用户和用户组
用户组添加组:groupadd 组名groupaddtestcat /etc/group |greptest删除组:groupdel 组名groupdeltest删除组:cat /etc/group | grep 组名用户添加用户:useradd -m -g 组名 用户名注意:-m 自动建立用户家目录; -g 指定用户所在的组,否则会建立一个...转载 2020-01-30 19:02:13 · 341 阅读 · 0 评论 -
HTTP状态码
1xx:信息100 Continue服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。101 Switching Protocols服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。2xx:成功200 OK请求成功(其后是对GET和POST请求的应答文档)201 Created请求被创建完成,同时新的资源被创建。2...原创 2020-01-29 14:37:10 · 290 阅读 · 0 评论 -
CPU-平均负载
简单来说,平均负载是指在单位时间内系统处于可运行状态和不可中断状态的进程数,也就是平均活跃进程数。与CPU使用率没有直接关系。可运行状态:正在使用CPU或等待CPU的进程。runnable 和 running不可中断状态:处于内核态关键流程中的进程,此进程是不可被中断。disk sleepuptime含义:系统1分钟、5分钟、10分钟时段内的平均活跃进程数。负载指标:不超过70%,...原创 2019-12-31 16:59:12 · 325 阅读 · 1 评论 -
Jmeter指定jdk版本启动
场景当jdk生成SSL通行证后,本地IDE运行代码请求服务成功,但Jmeter做java请求不通报如下错误:检查java代码后发现没问题,为什么用Jmeter做请求会报错呢?所以为Jmeter指定JDK启动做尝试。解决方法进入jmeter bin目录选择jmeter.bat前面添加set MINIMAL_VERSION=1.8.0 //即你要启动的jdk版本最小版本;set...原创 2019-10-30 15:09:54 · 1678 阅读 · 1 评论 -
Loadrunner参数化种类和用法
1.Data/Time:用当前的日期/时间替换参数。各字母含义:1)c:用数字表示完整的日期和时间2)#c:完整的日期(以字符串表示)和时间3)H:小时(24小时制)4)I:小时(12小时制)5)M:分钟 S:秒 p:AM或PM6)d:日子 m:数字形式的月份(01-12)7)b:字符串形式的月份,短格式(eg:Dec)...转载 2019-06-19 14:06:44 · 1692 阅读 · 0 评论 -
Loadrunner处理xml报文方法
原创 2019-06-19 13:59:53 · 2177 阅读 · 0 评论 -
Loadrunner获取系统时间方法
Action(){ //在一些求中,需要获得当前系统时间作为计算密钥的一个因子,下面简单介绍下lr获取当前系统时间的几个方法: long t; char *gettime; //获得当前系统时间方法一: time(&t); lr_message("t == %ld ",t ); lr_message("方法一直接获取当前时间的结果是:%s",c...原创 2019-06-19 13:57:21 · 665 阅读 · 0 评论 -
Linux性能分析工具图谱
转载 2019-08-17 13:54:10 · 349 阅读 · 0 评论 -
Jmeter函数助手获取时间戳
${__time(,)} : 默认该公式精确到毫秒级别, 13位数${__time(/1000,)} : 该公式精确到秒级别, 10位数化成日期格式为:${__time(yyyy-MM-dd,)}${__time(YMDHMS,)}执行结果如下:...原创 2019-06-19 13:51:01 · 1834 阅读 · 0 评论 -
【随笔】性能测试-测试套路
“给时间以文明,而不是给文明以时间“,最近被刘慈欣的《三体》严重洗脑,哈哈,干什么事都会上升到黑暗森林里去寻找答案,哎哎!好久没有总结理论性的东西了,最近公司有性能测试培训,在测试培训资料的编写中发现很多理论性的东西需要一步步再次总结了,哎~~~~~~~人老了,变鱼了。下面进入正题:注意:这里只提供大体思路,细节问题要具体问题具体分析,毕竟尽信书不如不读书,事情要留有自己思考的空间-_-!...原创 2019-06-25 18:20:38 · 278 阅读 · 0 评论 -
Jmeter持续集成一:ant执行jmeter脚本
Jmeter接口测试脚本运行后生成的是jtl(xml)格式的文件,这些文件不具备可读性,所以我们要把他转化为可以阅读的html格式报告。Ant是一个功能强大的打包编译工具。我们使用他的目的是将xml文件转化为html格式的文件。准备工作1.安装ant2.准备jmeter脚本用ant执行脚本1.jmeter下新建两个目录TestReport文件夹:用于保存html的结果报告;...原创 2019-06-05 16:40:42 · 466 阅读 · 0 评论 -
Jmeter持续集成二:Jekins持续集成
1.Jekins全局工具配置系统管理->全剧共举配置(1)JDK配置(2)Ant配置2.Jekins新建任务(2)配置构建->Invoker Ant配置完成后点击保存。3.开始测试(1)立即构建(2)构建成功查看控制台日志Started by user ***Running as SYSTEM[EnvInject] ...原创 2019-06-26 10:55:32 · 1082 阅读 · 0 评论 -
Linux下安装配置rocketmq-单点
前期准备:安装JDK和maven,并配置好全局变量。安装rocketMQ1.下载源码并构建二进制文件wget http://mirrors.hust.edu.cn/apache/rocketmq/4.3.1/rocketmq-all-4.3.1-source-release.zipunzip rocketmq-all-4.3.1-source-release.zipcd rock...原创 2019-06-26 16:49:06 · 407 阅读 · 0 评论 -
【随笔】软件性能测试-现在与未来
很多人对性能测试的认识还停留在写个脚本压一压就可以了的阶段,性能测试真的如此吗? 今天就提笔总结下个人经验吧,仅供大家参考。性能测试的哲学性能测试是一个持续改进的过程,也是一份充满挑战的工作;在工作中我们会涉及硬件平台、操作系统、数据库、缓存、中间件、应用架构、系统程序等方面的知识,广度与深度并重。“你知道的越多,你不知道的也就越多。”这也是现代自然科学的写照,在广度无限和深度无限...原创 2019-07-04 10:44:29 · 236 阅读 · 0 评论 -
linux性能测试工具sysbench安装方法
sysbench模拟多线程1.安装依赖# yum -y install make automake libtool pkgconfig libaio-devel# yum -y install mariadb-devel openssl-devel# yum -y install postgresql-devel2.下载sysbench# wget http://downloa...原创 2019-08-18 14:02:05 · 2710 阅读 · 1 评论 -
LINUX配置查看命令
版本lsb_release -aCPUcat /proc/cpuinfo processor的数量就是我们所说的CPU核数(逻辑处理器的数量)top 然后按 1 Cpu0-Cpu3 四核内存free 单位KBfree -m 单位MB磁盘df -lh...原创 2019-01-18 10:48:03 · 3224 阅读 · 0 评论 -
同步阻塞IO、同步非阻塞IO、异步阻塞(IO多路复用)、异步非阻塞IO区别
常用4种IO模型(1)同步阻塞IO(Blocking IO):即传统的IO模型。(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。(3)IO多路复用(IO Multiplexing):即经典的Reactor设计模式,有时也称为异步阻...原创 2019-05-24 18:01:38 · 3996 阅读 · 0 评论 -
-XX:+UseParallelGC与 -XX:+UseParNewGC 区别
含义:-XX:+UseParallelGC:选择垃圾收集器为并行收集器。此配置仅对年轻代有效。可以同时并行多个垃圾收集线程,但此时用户线程必须停止。-XX:+UseParNewGC:设置年轻代为多线程收集。可与CMS收集同时使用。在serial基础上实现的多线程收集器。差异:-XX:+UseParallelGC指 定在 New Generation 使用 parallel...转载 2019-05-24 14:44:24 · 7625 阅读 · 0 评论 -
IO瓶颈定位
对于服务器资源消耗,我们大多关注CPU,内存,网络等,往往会忽视IO(磁盘IO为主)瓶颈,下面通过分享一点经验:什么样的服务容易出现IO瓶颈1.IO密集型服务(例如数据库,文件存储服务dfs等)2.含有大量读写的服务(服务日志写入庞大,文件读取频繁)3.含有持久化功能的服务(Redis、MQ等)问题思路导图流程(比较粗的划分,与IO流设计有关,但这里不详解啦)IO->...原创 2019-03-25 11:39:16 · 3181 阅读 · 0 评论 -
JAVA启多线程简单例子
例子包括三个java文件:Request 具体请求方法;RequestThreads多线曾run方法;RequestMain主控方法。Request.java:public class Request { public static void requestMethod(String threadName,String printContent) { Sys...原创 2019-01-20 17:56:27 · 295 阅读 · 0 评论 -
CPU性能问题排查方法-上下文切换
过多上下文切换会把CPU时间消耗再寄存器、内核栈以及虚拟内存等数据的保存和恢复上,缩短进程真正运行时间,是系统性能下降的一个主要原因。vmstat查看系统上下文切换情况:cs(context switch)每秒上下文切换次数 in(interrupt)每秒中断次数 r (running or runnable)正在运行和等待CPU进程数 b(blocked)不可中断睡眠状态的进程...转载 2019-01-24 14:48:21 · 948 阅读 · 0 评论 -
jstack排查定位线程
企业级Java开发中,有时候会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 下面我们拿jstack工作做一个简单的问题定位操作:系统运行时候top查看系统资源消耗情况,发现资源占用高的java进程id44133:...原创 2019-01-24 11:32:18 · 216 阅读 · 0 评论 -
python启多线程请求简单例子
# -*- coding: utf-8 -*-import requestsimport threadingclass GetRequests: def __init__(self): self.url = "http://www.baidu.com" def requestGetMethod(self): r = requests.get...原创 2019-01-18 19:58:56 · 291 阅读 · 0 评论 -
Loadrunner基础教程--Controller场景设置和性能状态
脚本运行时设置和场景运行时设置的区别?脚本运行时设置和场景运行时设置的内容基本一样,但场景运行时设置的优先级要高于脚本运行时设置。比如,脚本运行时设置的迭代次数为3次,而场景运行时设置为6次,则迭代次数为6次。我们需要重点监控哪几个图?我们重点监控的图就是我们要监控的性能指标,一般包括Running Vusers、点击率、吞吐量、HTTP每秒响应连接数、每秒连接数、增加响应时间、每秒成...原创 2019-01-10 21:06:29 · 11027 阅读 · 1 评论 -
Loadrunner基础教程--怎么查看每个用户的运行时日志?
怎么查看每个用户的运行时日志?在controller里运行的时候。可以设置run time setting,打开LOG,设置:always send message。然后在run视图里,可以点击:vusers.在弹出窗口中选择一个vusers,再点击左上方的第三个图标:show vuser log。就可以实时查看当前用户的状态。这些LOG,在lrr的结果目录的LOG文件夹下有。这个...原创 2019-01-10 21:04:24 · 1402 阅读 · 0 评论 -
Loadrunner基础教程--参数化的多种组合结果是什么?
参数化的多种组合结果是什么?对于file类型的参数,如下图所示:回顾一下,我们前两天涉及到的取下一数据方式和更新值的方式:其中:Select next row:Sequential:每个VU按照顺序读取。每一个虚拟用户都会按照相同的顺序读取。 Random:每个VU随机读取一个。 Unique:每个VU顺序取唯一的值。注意:使用该类型必须注意数据池中数据充足。 Sam...原创 2019-01-10 21:02:52 · 310 阅读 · 0 评论 -
Loadrunner基础教程--运行时设置的每个选项的含义
运行时设置的每个选项的含义Run LogicRun-time Setting可以设置脚本运行时的一些策略,打开General下的Run Logic,如下图所示:Run Logic控制脚本迭代的次数,如上图所示,迭代次数为1,需要注意的是,设置的迭代次数只对Action有效,即脚本中的Action迭代1次。Pacing打开General下的Pacing,如下图所示:P...原创 2019-01-10 21:00:37 · 2065 阅读 · 0 评论 -
Loadrunner基础教程--怎么通过block块控制脚本执行流程?
怎么通过block块控制脚本执行流程?Block可以在一个脚本中实现不同事务不同次数的循环操作: 1.将所要考察的事务设置在不同的Action内。 2.在Run中删掉默认的Action。 3.在Run中插入Block。 4.在插入的Block中再插入我们要考察的Action。 5.设置Block的properties。两种选择,Sequential和Random。 如...原创 2019-01-10 20:56:46 · 629 阅读 · 0 评论 -
LINUX uptime命令解读
每当系统变慢时,我们做的第一件事就是执行top或uptime,来了解下负载情况。如下:这里每一列输出的含义是什么呢?19:40:29 //当前时间up 3 days, 7:32 //系统运行时间3 user //正在登录用户数最后三个数呢?依次是 1分钟,5分钟,15分钟的平均负载(load average)什么是平均负载呢?简单来说,平均负载是指单位时间内,系...转载 2019-01-20 20:09:10 · 7792 阅读 · 0 评论 -
性能测试术语(一)
性能测试术语(一)性能测试术语解释大家好! 最近有很多功能测试人员学习并转型做性能测试,同学们都很努力;但是也暴露出来一些问题,其中就有对性能测试概念理解不清楚一头栽进性能测试工具的使用和脚本编写上,往往绕很多弯路研究了一大堆最后没有用上,白白浪费大把时间走了弯路。在此我想建议大家:性能测试的学习一定要先了解并掌握性能测试的基本概念和术语,避免走弯路。希望能给大家一点帮助,如有不足的地方欢迎提...原创 2019-01-10 20:54:26 · 2053 阅读 · 0 评论 -
Redis 总结精讲
本文围绕以下几点进行阐述1、为什么使用redis2、使用redis有什么缺点3、单线程的redis为什么这么快4、redis的数据类型,以及每种数据类型的使用场景5、redis的过期策略以及内存淘汰机制6、redis和数据库双写一致性问题7、如何应对缓存穿透和缓存雪崩问题8、如何解决redis的并发竞争问题正文 1、为什么使用redis 分析:博主觉得在项目...转载 2019-01-15 20:03:38 · 157 阅读 · 0 评论 -
TPS监控工具tcprstat安装使用
tcprstat是免费开源tcp分析工具,通过监控网络传输来统计分析请求的响应时间安装# wget http://github.com/downloads/Lowercases/tcprstat/tcprstat-static.v0.3.1.x86_64# cp tcprstat-static.v0.3.1.x86_64 tcprstat# chmod a+x tcprstat...翻译 2019-03-14 18:03:27 · 3423 阅读 · 0 评论 -
Redis-monitor安装与配置--Redis性能监控
在不断采坑和填坑后,终于把redis-monitor搞定了。方法适合于特定的环境,环境不同坑也可能不同,话不多说。一、环境linux CentOS 7.5python 2.7二、准备阶段关闭防火墙//安装iptables-servicesyum install -y iptables-services//关闭防火墙service iptables stopR...原创 2019-02-13 16:31:37 · 3749 阅读 · 0 评论