摘要: Jmeter插件管理器 安装插件的方法有两种,一种是传统的方式,即官网下载,本地配置,重启jmeter。现在有一种快捷的方法可以自定义安装插件-插件管理器 JMeter 插件管理器的使用方法很简单:不要手动安装各种插件,它提供了友好的用户界面来完成:安装、升级、卸载。它管理插件包括 jmeter-p 阅读全文
posted @ 2021-05-27 15:57 shenna 阅读(83) 评论(0) 推荐(0)
摘要: Docker部署接口自动化持续集成环境第三步,容器化Jmeter与ant! 接上文:Docker_容器化jenkins 为了整合接口自动化的持续集成工具,我将jmeter与ant都部署在了Jenkins容器中,并配置了build.xml 一:ubuntu部署jdk 1:先下载jdk-8u74-lin 阅读全文
posted @ 2021-05-27 15:56 shenna 阅读(135) 评论(0) 推荐(0)
摘要: jmeter中,接口自动化的关键在于参数关联。比如需要登录的接口,如何调用登录口令?一个增删改查的闭环,如何将接口参数上下传递?下面就以实际的例子来仔细说一说 1:登录接口 这里有一个实际的登录接口,在响应中返回了一串token,如下图 那么我们在接下来的接口-经验库列表中,就必须带入这一串toke 阅读全文
posted @ 2021-05-27 15:54 shenna 阅读(120) 评论(0) 推荐(0)
摘要: 概述: jmeter中,常常需要连接数据库去断言业务是否正确。因此jdbc数据库关联是必须掌握的核心知识。 基础操作 JDBC请求,最核心的是两个jar包: mysql驱动-mysql-connector-java-5.1.13-bin.jar sqljdbc4.jar 将这两个jar包放到Jmet 阅读全文
posted @ 2021-05-27 15:53 shenna 阅读(76) 评论(0) 推荐(0)
摘要: JMeter提供了很多函数,如果能够熟练使用,可以为脚本带来很多方便。 JMeter函数是一种特殊值,可用于除测试计划外的任何组件。 函数调用的格式如下所示:${__functionName(var1,var2,var3)}其中,__functionName为函数名,括号内是函数的参数,无参数时可以 阅读全文
posted @ 2021-05-27 15:52 shenna 阅读(115) 评论(0) 推荐(0)
摘要: 循环控制器 指定其子节点运行的次数,可以使用具体的数值,也可以设置为变量 勾选永远:表示一直循环下去 如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的子节点运行的次数为两个数值相乘。(线程数*循环控制器数值) 简单控制器: 这是Jmeter里最简单的一个控制器,它可以让我们组织我 阅读全文
posted @ 2021-05-27 15:51 shenna 阅读(188) 评论(0) 推荐(0)
摘要: HTTP Cookie Manager 用来存储浏览器产生的用户信息 Clear Cookies each Iteration:每次迭代请求,清空cookies,GUI中定义的任何cookie都不会被清除。 Implementation:默认HC4CookieHandler Cookie Polic 阅读全文
posted @ 2021-05-27 15:50 shenna 阅读(134) 评论(0) 推荐(0)
摘要: 概述 在 jmeter 目录下 (以 JMeter3.2 版本为例)存在多个配置文件:jmeter.propertiesuser.propertieslog4j2.xml其中最重要的是 jmeter.properties.下面对常用的一些配置项的设置进行说明。 语言 language=zh_CN # 阅读全文
posted @ 2021-05-27 15:48 shenna 阅读(79) 评论(0) 推荐(0)
摘要: 1:环境部署 1:http://jmeter.apache.org/下载最新版本的JMeter,解压文件到任意目录 2:安装JDK,配置环境变量 JDK环境变量配置 3:应当避免jdk路径与jmeter路径有中文和空格,否则会有异常 2:目录及面板介绍 目录: l 目录说明: l bin 包含启动、 阅读全文
posted @ 2021-05-27 15:47 shenna 阅读(129) 评论(0) 推荐(0)
摘要: 关键知识点 cpu 构造 lscpu物理核,逻辑核,超线程机制cpu 线程数=物理核逻辑核逻辑核线程数 cpu 时间片原理 时间片轮转机制cpu 线程调度应用程序线程进程与时间片的关系 上下文切换 进程上下文切换线程上下文切换系统调用切换 cpu 利用率 cpu 实际利用率cpu 有效利用率cpu 阅读全文
posted @ 2021-05-27 15:46 shenna 阅读(226) 评论(0) 推荐(0)
摘要: 概述 接上一篇 TPS 调优之 tomcat 线程池优化优化结果是将 TPS 提升到了 1000 左右,但是感觉不大满意,还有继续优化的空间 线程深度定位 arthas工具arthas 是阿里的一款开源工具,用来深层次的排查服务器线程问题,方便好用。下面介绍两个简单的命令 thread | grep 阅读全文
posted @ 2021-05-27 15:45 shenna 阅读(218) 评论(0) 推荐(0)
摘要: 概述 最近整了一台新的服务器,跑业务的时候发现一个问题。随着负载升高,TPS 在抬升到一定高度之后,出现大幅下跌的现象。TPS 监听如下图 服务端监听 cpu 利用率一分钟平均负载只有 1.6,cpu 利用率 50%。负载低,利用率也低 运行进程队列不高,也就 20 个左右。 mpstat 分析用户 阅读全文
posted @ 2021-05-27 15:43 shenna 阅读(1120) 评论(0) 推荐(0)
摘要: 概述 客户端优化 序列号同步第一次握手的时候,客户端会向服务端发送连接请求的报文,叫SYN,SYN 全称是Synchronize Sequence Numbers,翻译过来是同步序列号。建立连接的第一件事就是同步序列号。只有同步了序列号才有保证稳定可靠的传输。一个序列号占四个字节的内存 SYN 重试 阅读全文
posted @ 2021-05-27 15:41 shenna 阅读(477) 评论(0) 推荐(0)
摘要: 概述 tcp 在建立连接的过程中,有三次握手和四次挥手的过程。在这个流程中,产生了十种状态。入下图 三次握手第一次握手:客户端向服务器发出连接的请求(SYN)。此时客户端进程进入了 SYN-SENT状态,表示客户端想要和服务端建立连接 第二次握手:服务端接收到客户端的请求后,如果同意连接,则发出确认 阅读全文
posted @ 2021-05-27 15:39 shenna 阅读(878) 评论(0) 推荐(0)
摘要: 概述 最近接手的一个项目,服务端的 cpu 利用率一直爆表。不做任何压测,利用率也保持在 200% 左右 分析 从 top 里面可以看出几个问题1:负载几乎为 0,可以排除线程过多的问题2:usr 的 cpu 利用率几乎是 sy 的三倍,初步怀疑代码层面有问题3:IOwait 几乎没有,可以排除 I 阅读全文
posted @ 2021-05-27 15:38 shenna 阅读(481) 评论(0) 推荐(0)
摘要: 问题反馈 这是一个性能培训学员反馈的 TPS 问题100 并发用户下的负载测试,TPS 最大升到 570 左右,然后跌到 400,并且长期保持。加线程也不能让 tps 再有所增加。 从监听到的服务器指标来看,cpu 利用率一直处于低迷的状态,大约只有 40% 左右。 问题定位 执行 vmstat 1 阅读全文
posted @ 2021-05-27 13:57 shenna 阅读(247) 评论(0) 推荐(0)
摘要: 无效压测的背景 一:没有专业的性能测试人员或者团队;二:没有独立的性能测试环境;三:上线前临时开展性能测试,时间仓促,准备仓促;四: 功能测试人员经常被拉过来填坑性能测试任务,临时抱佛脚查资料;五: 没有完整清晰的性能测试需求,所有的性能指标全靠拍脑袋凑齐; 性能测试常见误区 性能测试就是使用工具加 阅读全文
posted @ 2021-05-27 13:46 shenna 阅读(135) 评论(0) 推荐(0)
摘要: linux 下 tcp 参数优化 vim /etc/sysctl.conf # 未收到客户端确认信息的连接请求的最大值net.ipv4.tcp_max_syn_backlog=5000 #timewait 数量net.ipv4.tcp_max_tw_buckets = 6000 # 改进 tcp 的 阅读全文
posted @ 2021-05-27 13:45 shenna 阅读(359) 评论(0) 推荐(0)
摘要: 概述 在本地针对项目的登录接口做了一次简单的压力测试。200 并发持续 120s,观察吞吐量 运行结束之后,吞吐量是这样的 如图所示,吞吐量波动巨大,完全不正常。现在我们需要去观察一下服务器了 mpstat -P ALL 1* 先看一下 cpu 的运行情况 可以发现 cpu 的利用率呈现一种阶梯式递 阅读全文
posted @ 2021-05-27 13:44 shenna 阅读(226) 评论(0) 推荐(0)
摘要: 概述 性能测试中,如果一台机器的资源不足以支撑压测需求,那么我们就需要分布式来执行。所谓分布式,就是一台控制机带着 N 多台执行机同时跑脚本分布式执行原理 分布式测试时,本地 jmeter 作为控制机 (master),其它机器做为执行机 (slave)。master 把脚本分发到每台 slave 阅读全文
posted @ 2021-05-27 13:42 shenna 阅读(100) 评论(0) 推荐(0)
摘要: jvm 调优 -server:tomcat 以 server 模式运行时将拥有更大更高的并发处理能力,更快更强捷的 JVM 垃圾回收机制,可以获得更多的负载与吞吐量-Xms–Xmx:把 Xms 与 Xmx 两个值设成一样是最优的做法-Xss:设定线程的堆栈大小。一般不易设置超过 1M,否则容易出现 阅读全文
posted @ 2021-05-27 13:39 shenna 阅读(407) 评论(0) 推荐(0)
摘要: 概述 linux 自身有很多性能分析工具。并且提供了详细的输出格式。熟练掌握这些工具可以帮助我们更快的发现性能瓶颈,为性能调优提供思路。 工具一览 常用工具功能 top 展示所有进程信息 vmstat 展示详细的系统,硬件,信息 lscpu cpu 信息查看 sysstat 工具集,包括 sar,m 阅读全文
posted @ 2021-05-27 13:34 shenna 阅读(845) 评论(0) 推荐(0)
摘要: swap 原理 swap 就是内存交换的意思。计算机对内存分为物理内存与虚拟内存。物理内存就是计算机的实际内存大小,虚拟内存则是从磁盘空间开辟出一部分内存空间虚拟出来的,所以也叫磁盘缓存。虚拟内存的出现,让机器内存不够的情况得到部分解决。程序运行的时候系统会在虚拟内存与物理内存直接进行替换和加载。这 阅读全文
posted @ 2021-05-27 13:31 shenna 阅读(3251) 评论(0) 推荐(2)
摘要: 概述 在性能测试中,IO 是一个非常重要的指标。我这里整理了一部分关于 IO 的内容,用来加深自己的印象。所谓 IO,其实就是磁盘的读写。读 IO,就是发出指令,从磁盘读取某段扇区的内容。指令首先告诉磁盘开始的扇区位置,然后给出需要从这个初始扇区往后读取的连续扇区的个数,同时会告知磁盘动作是读,还是 阅读全文
posted @ 2021-05-27 11:18 shenna 阅读(3868) 评论(0) 推荐(0)
摘要: 概述 性能测试中,对服务端的指标监控也是很重要的一个环节。通过对各项服务器性能指标的监控分析,可以定位到性能瓶颈。 后端性能指标有 CPU,内存,网络,jvm,I/O 等等 分析思路 整体系统 CPU 利用率 内存利用率 磁盘 I/O 的利用率和延迟 网络利用率 CPU 瓶颈分析 监控命令:vmst 阅读全文
posted @ 2021-05-27 11:15 shenna 阅读(164) 评论(0) 推荐(0)
摘要: 概述 做压力测试的时候,我们经常会关注两个指标,CPU 利用率和 CPU 负载在 Linux 中,进程分为三种状态: 不可中断的进程 blocked process可运行的进程 runnable process正在运行的进程 running process 当进程处于不可中断时,进程会等待 I/O 阅读全文
posted @ 2021-05-27 11:12 shenna 阅读(642) 评论(0) 推荐(0)
摘要: cpu 平均负载 cpu 平均负载指的是单位时间内正在运行的不可中断的平均进程数,也就是是等待处理的任务队列下图红圈显示的是 5 分钟,10 分钟,15 分钟内的平均负载 导致 cpu 平均负载升高的原因 1:CPU 密集型2: I/O 密集型3:大量进程竞争 cpu 平均负载究竟是如何升高的?CP 阅读全文
posted @ 2021-05-27 11:09 shenna 阅读(396) 评论(0) 推荐(0)
摘要: 概述 用 jmeter 做性能测试的时候,避免不了要去分析服务器资源。服务器分为 windows 和 linux,资源包括 cpu,内存,磁盘,jvm,网络等等。那么如何去监听服务器资源呢?监听之后又怎么去分析呢,需要我们去思考一下 linux 资源监听 linux 安装插件 用 jmeter 监听 阅读全文
posted @ 2021-05-27 11:08 shenna 阅读(1696) 评论(0) 推荐(0)
摘要: 概述 java 内存溢出之后,我们需要根据错误信息分析一下内存溢出的具体原因,及时调整中间件的参数、 查看 jvm 内存分配 linux 下可以通过 jmap -heap【pid】命令查看 jvm 的内存分配例如:jmap -heap 1 这个图可以看出MaxHeapSize = 107374182 阅读全文
posted @ 2021-05-27 11:06 shenna 阅读(769) 评论(0) 推荐(0)
摘要: jvm 内存空间分析 JVM 内存包括区域Heap(堆区) New Generation(年轻代) Eden 伊甸园 Survivor From Survivor To Old Generation(老年代)方法区 Permanent Generation(持久代) Stack(栈区) Metasp 阅读全文
posted @ 2021-05-27 11:04 shenna 阅读(368) 评论(0) 推荐(0)
摘要: 什么是阶梯加压 阶梯加压是压力测试中的一个子集。它可以阶梯式的形式释放压力,以此测试服务器的性能。jmeter 中提供了阶梯加压线程组来满足我们的需求。 1-1图 1-1 名词解释this group will start:表示总共要启动的线程数,如图:设置 200 个,表示最终会加载 200 个线 阅读全文
posted @ 2021-05-27 11:00 shenna 阅读(573) 评论(1) 推荐(1)
摘要: 概述 在 jmeter 中,只要提到并发,99% 的同学立马想到线程组。需要多少并发就启动多少线程组,这已经成了大部分人的共识。这种理解方式很明显是把并发数和线程数的概念混淆了。线程组中不光有线程数,也有循环次数。然而大家在负载测试中都主动的忽略了循环的作用。jmeter 中的循环和 lr 中的迭代 阅读全文
posted @ 2021-05-27 10:58 shenna 阅读(23568) 评论(0) 推荐(2)
摘要: 概述 本文对百度进行一次实战压测,验证一下理论知识,分析一下性能拐点 操作 第一次实验:200 并发 并发 200,不限迭代次数,同时在请求下面加 RPS 定时器。目的是在 200 线程下,将 RPS 逐步增加到 1000/S,并持续运行一段时间 在线程下面添加 TPS,HPS,响应时间三种监听器 阅读全文
posted @ 2021-05-27 10:55 shenna 阅读(932) 评论(0) 推荐(0)
摘要: 前提 在阿里云 PTS 上有一篇文章讲解 VU、RPS、RT 换算,中间有一个公式介绍如下图 并发数 = RPS * 响应时间 于是我在本地做了几次实验,试图验证一下公式的准确性,实验网站 www.baidu.com 第一次实验 100 线程,一次迭代,启动时间 1s,线程组和聚合报告如图所示 从结 阅读全文
posted @ 2021-05-27 10:54 shenna 阅读(1656) 评论(0) 推荐(0)
摘要: 今天重点说一下Jmeter的上传与下载 1:Jmeter上传文件 首先确认你的文件名称,参数名称,MIME类型,这些可以从接口文档里面获取,或者直接在页面抓包然后从请求头里面查看。注意,此处我的文件路径是相对路径,对应的是我的bin目录 其次,Advanced里面选择java类型,切记 运行之后去查 阅读全文
posted @ 2021-05-27 10:50 shenna 阅读(176) 评论(0) 推荐(0)
摘要: 整理了一批jmeter常用的beanshell脚本供大家参考! 时间戳 import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; try{ Date date =new Date(); / 阅读全文
posted @ 2021-05-27 10:49 shenna 阅读(352) 评论(0) 推荐(0)