Tsung笔记之100万用户压测执行步骤篇

2023-11-26 04:20

本文主要是介绍Tsung笔记之100万用户压测执行步骤篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

总是说细节、理论,会让人不胜其烦。我们使用Tsung来一次100万用户压测的吧,或许能够引起好多人的兴趣 :))

下面,我根据在公司分享的PPT《分布式百万用户压测你的业务》,贴出其中的关键部分,说明进行一次100W(即1M)用户压测的执行步骤。

如何做分布式百万用户的压测 ?

假定面向小白用户,因此才有了下面可执行的10个步骤用于开展分布式百万用户。

看着步骤很多,一旦熟悉并掌握之后,中间可以省却若干。

1. 阅读Tsung文档

建议大家在使用Tsung之前,花费一点时间阅读完整个用户手册,虽然是英文的,阅读起来也不复杂。读完之后,我们也就知道如何做测试了,遇到的大部分问题,也能够在里面找到答案。

  • 官网:http://tsung.erlang-projects.org/
  • 在线手册:http://tsung.readthedocs.io/en/latest/index.html
2 确定压测目标

  • 要对线上系统压测100万用户,为了尽可能降低线上服务器负载压力,这里设置每秒产生500个用户,将在60分钟内产生完毕
  • 要压测的服务器所填写网络访问地址可以根据需要填写多个
3. 计算所需要从机数量






  • Tsung为主从模型,我们启动了主节点之后,主节点会按需启动从节点
  • 设定所用服务器可用内存大于3G,并且都只有一个IP地址
  • 一台从机可用模拟6万用户,需要17台从机
  • 若资源充足,可以少用几台服务器,配置多个IP地址
  • 找到所需要的压测用服务器,在资源层面满足测试测试集群需要,这个是关键
4. 部署Tsung

因为Tsung依赖于Erlang,因此需要首先安装:

wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
sudo yum install erlang

然后再是安装Tsung,建议直接使用Tsung 1.6.0修改版,主要提供IP只连支持(具体细节,可参考这里 http://www.blogjava.net/yongboy/archive/2016/07/28/431354.html ):

git clone https://github.com/weibomobile/tsung-1.6.0.git
./configure --prefix=/usr/local
make install
5. 下载SSH替代者-tsung—rsh

为什么要替换掉SSH,主要原因:

  • SSH在一般网络机房环境内服务器之间被禁止连接通信,这会导致主节点无法启动从节点,无法建立分布式压测集群
  • 就算是SSH没被禁用,主从之间需要设置免秘钥SSH登录方式,十分麻烦

可进一步参考:Tsung笔记之分布式增强跳出SSH羁绊篇。

6. 编写压测内容



要把业务定义的所有会话内容完整的整理映射成Tsung的会话内容,因为用户行为很复杂,也需要我们想法设法去模拟。

其实,演示所使用的是私有协议,可以参考 Tsung笔记之插件编写篇 。

当完成压测会话内容之后,users_100w.xml文件已经填写完毕,我们可以开始压测了。

7. 运行Tsung

  • -F 10.10.10.10 主节点IP地址,IP直连特性
  • -rsh rsh_client.sh 远程终端,SSH通道被替换
  • -s 压测端启用erlang smp特性,按需使用所有CPU核心

我们启动了从节点,然后从节点被启动,开始执行具体压测任务了。

8. 压测过程中,我们该做什么

紧密关注服务器服务状态、资源占用等情况就对了,最好还要作为一个终端用户参与到产品体验中去。

9. 压测结束,生成Tsung报表

Tsung压测结束之后,不会主动生成压测结果报表的,需要借助于 tsung_stats.pl perl脚本生成,要查阅可借助python生成临Web站点,浏览器打开即可。

10. 回顾和总结

小结

其实,一旦熟悉并掌握Tsung之后,步骤1-6都可以节省了,循环执行步骤7-10。

你若以为仅仅只是谈论Tsung如何做1M用户压测,那就错了,只要机器资源够,这个目标就很容易实现。我们更应该关注,我们压测的目的是什么,我们应该关注什么,这个应该形成一个完整可循环过程,驱动着系统架构健康先前发展。

转自:http://www.blogjava.net/yongboy/category/55089.html

这篇关于Tsung笔记之100万用户压测执行步骤篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/425108

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

springboot整合mqtt的步骤示例详解

《springboot整合mqtt的步骤示例详解》MQTT(MessageQueuingTelemetryTransport)是一种轻量级的消息传输协议,适用于物联网设备之间的通信,本文介绍Sprin... 目录1、引入依赖包2、yml配置3、创建配置4、自定义注解6、使用示例使用场景:mqtt可用于消息发