搭建Jmeter分布式压测与监控,轻松实践

news2024/11/29 14:55:53

对于运维工程师来说,需要对自己维护的服务器性能瓶颈了如指掌,比如我当前的架构每秒并发是多少,我服务器最大能接受的并发是多少,是什么导致我的性能有问题;如果当前架构快达到性能瓶颈了,是横向扩容性能提升大,还是纵向扩容性能提升大。

如果需要了解这些信息,需要在两方面下功夫,一个是对服务器进行性能测试,一个是对服务器进行性能监控。

  • 通过对服务器进行性能测试:我们可以了解到当前架构的性能瓶颈,还可以对架构横向扩容和纵向扩容来进行测试,对后期的架构扩容提供数据参考。
  • 通过对服务器进行性能监控:我们可以了解当前服务器的CPU、内存、IO等资源是否耗尽,我们可以在监控系统添加触发器,一旦服务器资源在快要达到瓶颈的时候,我们可以触发一个报警让运维人员来处理,也可以触发一个让架构进行自动化扩容(如果是云平台,直接调用api创建主机,ansible部署应用和程序)

本文将介绍下,我在工作中使用jmeter测试性能瓶颈的一些实践。本文做性能测试适用于移动互联网架构,非移动互联网架构有其他更好的测试方法。

如果你想学习jmeter性能测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的jmeter接口测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386

15天学会性能测试,通俗易懂详细教学,Jmeter性能测试实战(集群压测,全链路压测,性能调优,瓶颈分析)极速掌握,干就完事!_哔哩哔哩_bilibili15天学会性能测试,通俗易懂详细教学,Jmeter性能测试实战(集群压测,全链路压测,性能调优,瓶颈分析)极速掌握,干就完事!共计27条视频,包括:1.【性能测试】什么是性能测试以及性能测试的价值和目的、2.【性能测试】真实企业性能测试指标详解以及指标测算、3.【性能测试】真实企业中性能测试流程以及细节剖析等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1B14y1D7X9/?spm_id_from=333.337.search-card.all.click

1、Jmeter分布式压测介绍

在工作中使用jmeter做大并发压力测试的场景下,单机受限内存、CPU、网络IO,会出现服务器压力还没有上去,但是压测服务器已经由于模拟的压力太大死机了。为了让jmeter工具提供更强大的负载能力,jmeter提供了多台机器同时产生负载的机制,下面是架构图。

原理:比如我在jmeter server配置线程数为10,循环次数为100,也就是会对测试服务器发起1000次请求,我有3台agent服务器,如果我在server端选择远程启动压力测试,那么每台agent都会对测试服务器发起10*100次请求,那么这次压力测试产生的请求就是10*100*3=3000次。
如果对原理不是很明白,看完下面的操作之后就会理解了。

2、Jmeter分布式压测环境搭建

1)搭建前说明

服务器环境说明:做性能测试可以直接在在云平台按需购买压力机,一旦测试结束释放压力机即可。

分布式环境压力服务器要求:

  • 需要server(控制机)和agent(压力机),agent搭建在linux(centos 6.5)服务器环境下,server搭建在windows(server 2012)环境下。
  • 压力测试瓶颈大都在带宽上面,需要保证压力机的带宽要比服务器的带宽高,不然压力上不去。
  • 需要保证agent和server都在一个网络中,且在多网卡环境需要保证启动的网卡都在一个网段。
  • 需要保证server和agent之间的时间同步。
  • 关闭防火墙。

2)Windows部署jmeter

①部署jdk环境,配置path变量,安装完成效果如下

②直接去官网下载最新的二进制源码包即可。

③解压jmeter到指定目录,设置path变量,安装完成之后,在命令行运行jmeter命令,如果可以正常启动jmeter,说明环境配置ok。

3)Linux部署jmeter

①下载安装

wget http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-3.1.zip
unzip apache-jmeter-3.1.zip -d /usr/local/
cd /usr/local/
ln -s apache-jmeter-3.1/ jmeter

②配置启动脚本

#!/bin/bash
# chkconfig: 345 26 74
# description: jmeter agent
myip=`ifconfig eth0 |awk '/inet addr/{gsub(/addr:/,"");print $2}'`
cmd="/usr/local/jmeter/bin/jmeter-server -Djava.rmi.server.hostname=$myip"
start(){
  $cmd &
}
stop(){
    jmeter_pid=`ps aux | grep jmeter-server | grep -v grep | awk '{print $2}'`
    for pid in $jmeter_pid;do
    kill -9 $pid
    done
}
act=$1
case $act in
 'start')
   start;;
 'stop')
   stop;;
 'restart')
   stop
   sleep 2
   start;;
  *)
   echo '[start|stop|restart]';;
esac

③启动jmeter agent服务,验证是否监听1099端口

[root@jmeter-agent-01 ~]# /etc/init.d/jmeter-agent start
[root@jmeter-agent-01 ~]# netstat -lntp | grep 1099
tcp 0      0 0.0.0.0:1099        0.0.0.0:*      LISTEN 414/java

4)分布式环境配置

①确保server和agnet安装正确。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/646256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

很详细的Django开发入门详解(图文并茂)

1.Django概述 Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。 Django 框架的核心组件有: 用于创建模型的对象关系映射;为最终用户设计较好的管理界面;…

一些可以参考的文档集合12

之前的文章集合: 一些可以参考文章集合1_xuejianxinokok的博客-CSDN博客 一些可以参考文章集合2_xuejianxinokok的博客-CSDN博客 一些可以参考的文档集合3_xuejianxinokok的博客-CSDN博客 一些可以参考的文档集合4_xuejianxinokok的博客-CSDN博客 一些可以参考的文档集合5_…

C语言设计实现十六进制与十进制数之间的相互转换

一、十六进制数转为十进制数 1.设计一个C语言代码实现十六进制数例如0xFEFF转为十进制 以下是一个C语言代码示例&#xff0c;用于将十六进制数转换为十进制&#xff1a; #include <stdio.h> #include <stdlib.h>int main() {char hexNum[10]; // 存储输入的十六…

操作系统:详解物理内存与虚拟内存,用户空间与内核态空间

目录 0、基础知识&#xff1a;磁盘与物理内存 1、 通过虚拟地址访问物理内存 1.1 虚拟内存&#xff1a; 1.2 虚拟内存的优势&#xff1a; 1.3 举例说明&#xff1a; 2、用户空间与内核态空间 2.1 为什么进程的寻址空间要划分为用户空间与内核态空间两部分&#xff1f;&am…

装饰者模式(十一)

请相信自己&#xff0c;请再次相信自己&#xff0c;请一定要相信自己 上一章简单介绍了桥接模式(十), 如果没有看过, 请观看上一章 一. 装饰者模式 引用 菜鸟教程里面的装饰者模式介绍: https://www.runoob.com/design-pattern/decorator-pattern.html 装饰器模式&#xff0…

什么是开源工作流平台?

在办公职场中&#xff0c;有没有一款软件是实现提质增效的平台&#xff1f;如果让办公实现流程化管理&#xff0c;引用什么平台产品较为合适&#xff1f;低代码开发平台是近些年较为流行的办公软件平台&#xff0c;可以有效管理数据资源&#xff0c;制作表格可视化操作更简便&a…

Qt Quick系列(6)—多风格UI页面

&#x1f680;作者&#xff1a;CAccept &#x1f382;专栏&#xff1a;Qt Quick 文章目录 前言桌面版本的UI界面代码示例相关知识点 移动版风格的UI界面代码示例 嵌套页面代码示例相关知识点 并排页面代码示例相关知识点 前言 Qt Quick控件用于创建由标准化组件&#xff08;…

OpenCV迭代去畸变undistortPoints 与vins的迭代不同 vins前端与imu预积分

OpenCV去畸变undistortPoints原理解析 不动点迭代法—单变量非线性方程近似根matlab求解 淦VINS-MONO源码 03–openCV与VINS中去畸变方法的不同 这里用的方法和openCV不同&#xff0c;假设现在求A点的去畸变坐标&#xff0c;那么我们将A的坐标直接代入畸变模型中&#xff0c;求…

Pytest教程__用例执行顺序(5)

在unittest中&#xff0c;测试用例的执行顺序与测试用例的名称有关&#xff0c;按照名称的ascii码排序的&#xff0c;并不是按照用例的编写顺序执行的。 pytest默认是按用例的编写顺序执行的 我们可以通过第三方包 pytest-ordering 来自定义我们用例的执行顺序。 方法是使用装…

14. 100ASK-V853-PRO开发板 ADB测试指南

100ASK-V853-PRO开发板 ADB测试指南 硬件要求&#xff1a; 100ASK-V853-PRO开发板 软件要求&#xff1a; 固件下载地址&#xff1a;链接&#xff1a;百度网盘 提取码&#xff1a;sp6a 固件位于资料光盘中的10_测试镜像/4.测试ADB/v853_linux_100ask_uart0.img 1.硬件连接 …

JMeter循环读取CSV文件实现接口批量测试

目录 前言&#xff1a; 1、添加线程组 2、添加HTTP信息头管理器 3、添加HTTP请求 4、添加察看结果树 5、添加循环控制器 6、在循环控制器下添加CSV配置文件 7、其他配置文件需要修改写入形式 8、执行CSV文件&#xff0c;查看结果 前言&#xff1a; JMeter可以通过CSV…

安装Canal

安装和配置Canal 安装和配置Canal1.开启MySQL主从1.1.开启binlog1.2.设置用户权限2.安装Canal2.1.创建网络2.3.安装Canal安装和配置Canal 下面我们就开启mysql的主从同步机制,让Canal来模拟salve 1.开启MySQL主从 Canal是基于MySQL的主从同步功能,因此必须先开启MySQL的主…

不同等级的高速PCB工程师,薪资差距有多大?

高速PCB设计在现代电子领域中扮演着很重要的角色&#xff0c;而高速PCB工程师的技能水平和经验对于项目的成功至关重要&#xff0c;下面本文将从地区分布、薪资水平、工作内容等多方面讨论对比不同等级的高速PCB工程师。 NO.1 初级高速PCB工程师 ①薪资水平 初级高速PCB工程师…

用代码实现一个简单计算器

作者主页&#xff1a;paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《C语言》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造…

管理类联考——逻辑——知识篇——第四章 联言、选言(且、或)(5题,必考)

第四章 联言、选言&#xff08;且、或&#xff09;&#xff08;5题&#xff0c;必考&#xff09; 一、联言命题 联言命题是反映事物的若干种情况或者性质同时存在的复合命题 1.常见表达形式&#xff1a;A且B⟺即A又B⟺AB⟺虽然A但是B&#xff08;语气强调B&#xff0c;逻辑是…

配置GitLab账号登录SonarQube

gitlab账号集成到sonarqube 创建个人访问令牌 确认之后可获得 来到sonarqube界面&#xff0c;创建gitlab配置 gitlab地址后面加上/api/v4 将访问令牌粘贴过来 保存即可 回到gitlab添加应用&#xff0c;名称随意最好有意义一眼知道是干嘛的 URI是sonarqube地址/oauth2/callback…

JavaSE进阶——网络编程

文章目录 前言一、网络编程二、通信1、两个重要的要素2、通信协议 三 、Socket四、基于TCP的网络编程1、单向通信1.1 服务端1.2 客户端 2、双向通信2.1 服务端2.2 客户端 3、传输对象3.1 服务端3.2 客户端 4、保持通信4.1 服务端4.2 客户端 五、基于UDP的网络编程1、单向通信1.…

软件开发流程管理中的6个重点

1、需求的确定 充分了解用户真实需求&#xff0c;与用户保持沟通交流&#xff1b;需求文档需详尽、准确&#xff0c;明确功能和客户期望&#xff1b;确保需求的合理性、完整性和可行性&#xff0c;并对需求进行优先级排序。 软件开发流程管理中的6个重点 2、设计原则 设计包括概…

【机器学习】一个简单的神经网络例子教你理解前向传播

在开始这个例子前&#xff0c;希望你已经了解了神经网络的相关内容&#xff0c;可以参见如下文章 https://blog.csdn.net/weixin_45434953/article/details/131048661 在计算机中&#xff0c;有一种很基础的运算称之为与运算&#xff0c;这是一个二元运算符&#xff0c; x 1 &…

web前端-TypeScript学习

web前端-TypeScript学习 TypeScript 介绍TypeScript 初体验安装编译TS的工具包编译并运行TS代码 TypeScript 常用类型类型注解常用基础类型原始类型数组类型类型别名函数类型对象类型接口元祖类型推论类型断言字面量类型枚举any类型typedof TypeScript 高级类型class类class的基…