草庐IT

JMeter-BeanShell

全部标签

记一次 JMeter 压测 HTTPS 性能问题

  问题背景 在使用JMeter压测时,发现同一后端服务,在单机500并发下,HTTP和HTTPS协议压测RT差距非常大。同时观测后端服务各监控指标水位都很低,因此怀疑性能瓶颈在JMeter施压客户端。 问题分析 切入点:垃圾回收 首先在施压机观察到CPU使用率和内存使用率都很高,详细看下各线程CPU、内存使用情况:top-Hp{pid}发现进程的CPU使用率将近打满,其中GC线程CPU使用率很高  再看下gc的频率和耗时,发现每秒都有YoungGC,且累计耗时比较长,因此先从频繁GC入手,定位问题。 java/bin/jstat-gcutil{pid}1000  在压测过程中,对JMeter

Jmeter分布式压测

一、什么是压力测试?压力测试(StressTest),也称为强度测试、负载测试,属于性能测试的范畴。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行被测软件系统,来测试被测系统的性能、可靠性、稳定性等。一定负载的情况下,长时间运行被测软件系统,称为稳定性测试;超大负荷地运行被测软件系统称为极限压力测试。二、什么是分布式测试?分布式测试是指通过局域网和Internet,把分布于不同地点、独立完成特定功能的测试计算机连接起来,以达到测试资源共享、分散操作、集中管理、协同工作、负载均衡、测试过程监控等目的的计算机网络测试。三、为什么要使用分布式压力测试?普通压力测试

Jmeter分布式压测

一、什么是压力测试?压力测试(StressTest),也称为强度测试、负载测试,属于性能测试的范畴。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行被测软件系统,来测试被测系统的性能、可靠性、稳定性等。一定负载的情况下,长时间运行被测软件系统,称为稳定性测试;超大负荷地运行被测软件系统称为极限压力测试。二、什么是分布式测试?分布式测试是指通过局域网和Internet,把分布于不同地点、独立完成特定功能的测试计算机连接起来,以达到测试资源共享、分散操作、集中管理、协同工作、负载均衡、测试过程监控等目的的计算机网络测试。三、为什么要使用分布式压力测试?普通压力测试

Jmeter远程服务模式运行时引用csv文件的路径配置

问题在使用jmeter过程中,本机的内存等配置不足,启动较多的线程时,可以采用分布式运行。在分布式运行的时候,jmeter会自动将脚本从master主机发送到remote主机上,所以不需要考虑将脚本拷贝到remote主机。但是jmeter不会发送脚本中引用的数据文件,如果脚本中使用了csv数据文件元件,此时就需要考手动将csv文件备份到remote主机上。但是由于remote主机的目录结构可能和master主机上并不相同,甚至remote主机的操作系统也不一致,此时如何设置csv文件的路径呢?解决方法jmeter中有一个__P()函数,可以获取jmeter的系统属性。右键测试计划:添加->非测

Jmeter远程服务模式运行时引用csv文件的路径配置

问题在使用jmeter过程中,本机的内存等配置不足,启动较多的线程时,可以采用分布式运行。在分布式运行的时候,jmeter会自动将脚本从master主机发送到remote主机上,所以不需要考虑将脚本拷贝到remote主机。但是jmeter不会发送脚本中引用的数据文件,如果脚本中使用了csv数据文件元件,此时就需要考手动将csv文件备份到remote主机上。但是由于remote主机的目录结构可能和master主机上并不相同,甚至remote主机的操作系统也不一致,此时如何设置csv文件的路径呢?解决方法jmeter中有一个__P()函数,可以获取jmeter的系统属性。右键测试计划:添加->非测

JMeter 逻辑控制之IF条件控制器

逻辑控制之IF条件控制器测试环境JMeter-5.4.1循环控制器介绍添加WhileController右键线程组->添加->逻辑控制器->While控制器控制器面板介绍添加后,面板如下仅Expression值为true,才会执行位于其下的操作最好勾选(默认配置)InterpretConditionasVariableExpression?,这样Expression输入框可以有两种输入选择:输入一个值为true或者false的变量比如,如果你想测试,最后一个采样器执行是否成功,可以输入${JMeterThread.last_sample_ok}输入对bool表达式求值的函数(建议使用${__j

JMeter 逻辑控制之IF条件控制器

逻辑控制之IF条件控制器测试环境JMeter-5.4.1循环控制器介绍添加WhileController右键线程组->添加->逻辑控制器->While控制器控制器面板介绍添加后,面板如下仅Expression值为true,才会执行位于其下的操作最好勾选(默认配置)InterpretConditionasVariableExpression?,这样Expression输入框可以有两种输入选择:输入一个值为true或者false的变量比如,如果你想测试,最后一个采样器执行是否成功,可以输入${JMeterThread.last_sample_ok}输入对bool表达式求值的函数(建议使用${__j

基于Docker的JMeter分布式压测

       一个JMeter实例可能无法产生足够的负载来对你的应用程序进行压力测试。如本网站所示,一个JMeter实例将能够控制许多其他的远程JMeter实例,并对你的应用程序产生更大的负载。JMeter使用JavaRMI[远程方法调用]来与分布式网络中的对象进行交互。JMeter主站和从站的通信如下图所示:我们需要为每个Slave/Server打开2个端口。Server_port=1099server.rmi.localport=50000在客户机上打开一个端口,让从机将结果发送给主机。client.rmi.localport=60000通过在多台机器上运行JMeter的多个实例作为服务器

基于Docker的JMeter分布式压测

       一个JMeter实例可能无法产生足够的负载来对你的应用程序进行压力测试。如本网站所示,一个JMeter实例将能够控制许多其他的远程JMeter实例,并对你的应用程序产生更大的负载。JMeter使用JavaRMI[远程方法调用]来与分布式网络中的对象进行交互。JMeter主站和从站的通信如下图所示:我们需要为每个Slave/Server打开2个端口。Server_port=1099server.rmi.localport=50000在客户机上打开一个端口,让从机将结果发送给主机。client.rmi.localport=60000通过在多台机器上运行JMeter的多个实例作为服务器

Jmeter使用beanshell对接口加密,调用AES代码的jar包,CBC模式,有偏移量。

工作中需要对接口进行AES加密,找开发要来了加密的代码(如下),记录下具体的使用方法:在IDEA中新建一个AES1模块,在里面新建一个类(类的名字为AESu1)。把下面的代码复制进去,这样,AES加密的方法就构建好了。接下来就是导出为jar包了。文件-项目结构-工件-点击+号,3.1点击构建-构建工件3.2再选中AES1.jar,点击构建,jar就创建好了把生成的jar包,放到jmeter的lib路径下(有的文章说需要放到lib的ext路径下),不过我是放到lib就已经可以使用了。在jmeter中,需要把jar包的路径,放到测试计划中。在beanshell中importAES1.*;填入代码即