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

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

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

通过对服务器进行性能测试:我们可以了解到当前架构的性能瓶颈,还可以对架构横向扩容和纵向扩容来进行测试,对后期的架构扩容提供数据参考。
通过对服务器进行性能监控:我们可以了解当前服务器的CPU、内存、IO等资源是否耗尽,我们可以在监控系统添加触发器,一旦服务器资源在快要达到瓶颈的时候,我们可以触发一个报警让运维人员来处理,也可以触发一个让架构进行自动化扩容(如果是云平台,直接调用api创建主机,ansible部署应用和程序)
本文将介绍下,我在工作中使用jmeter测试性能瓶颈的一些实践。本文做性能测试适用于移动互联网架构,非移动互联网架构有其他更好的测试方法。

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安装正确。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-01-31 01:14:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-31 01:14:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-31 01:14:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-31 01:14:03       20 阅读

热门阅读

  1. 【vue】前后端不在同一网络下,前端解决跨域

    2024-01-31 01:14:03       33 阅读
  2. python3-cookbook-查找两字典的相同点

    2024-01-31 01:14:03       40 阅读
  3. 738. 单调递增的数字 - 力扣(LeetCode)

    2024-01-31 01:14:03       29 阅读
  4. 达梦 hibernate连接主备集群

    2024-01-31 01:14:03       37 阅读
  5. 蓝桥杯练习-dfs算法飞机降落问题

    2024-01-31 01:14:03       35 阅读
  6. 「优选算法刷题」:只出现一次的数字Ⅲ

    2024-01-31 01:14:03       35 阅读
  7. 面试经典 150 题 -- 数组 / 字符串 (总结)

    2024-01-31 01:14:03       28 阅读
  8. Unity数据解析(Json、XML、CSV、二进制)

    2024-01-31 01:14:03       34 阅读
  9. NTP时间同步服务器@客户端时钟同步设置

    2024-01-31 01:14:03       30 阅读
  10. Redis面试题35

    2024-01-31 01:14:03       40 阅读