Jmeter性能测试专题

性能测试分类

1. 容量测试:通常是指数据库层面的,目标是获取数据库的最佳容量的能力,又称之为容量预估,具体测试方法为在一定的并发用户,不同的数据基数数据量下,观察数据库的处理能力,即获取数据库的各项性能指标
2. 可靠性测试:稳定性测试或疲劳测试,是指系统在高压情况下,长时间得运行系统是否稳定,如CPU使用率在80%以上,7*24小时运行,系统是否稳定
3. 异常测试:又称之为失败测试,是指系统架构方面得测试,如在负载均衡架构中,要测试宕机,节点挂掉等情况系统得反应
4. 负载测试:通过逐步加压得方法,达到既定的性能阈值的目标,阈值的设定应是小于等于某个值,如CPU使用率小于等于80%
5. 压力测试:通过逐步加压的方法,使得系统的某些资源达到饱和,甚至失效的状态,简单粗暴的解释就是什么条件能把系统压崩溃
6. 并发测试:同一时间内,多个虚拟用户同时访问同一模块,同一功能,通常的测试方法是设置集合点

性能测试的指标

1. 事务:从客户端发起的一个或多个请求(这些请求组成一个完成的操作),到客户端接收到从服务器返回的响应
2. tps(Transaction per s): 每秒钟系统能处理的事务数
3. 请求响应时间: 从客户端发起的一个请求开始,到客户端接收到从服务器返回的响应,整个过程所耗费的时间
4. 事务响应时间:事务可能是由一个或多个请求组成的,事务响应时间主要针对于用户的角度而言,如转账
5. 并发定义:没有严格意义上的并发,并发总有先后,无论差距是1毫秒或者是1微秒,总有一个时间差,所以并发讲的是一个时间范围内,比如1s内
6. 并发举例:多用户在系统上进行同一操作,同一商品秒杀
		  多用户在系统上进行不同操作, 不同商品进行秒杀
7. 并发用户数:同一单位时间内,对系统发起请求的用户数
8. 吞吐量: 一次性能测试过程中网络上传输的数据量的总和
9. 吞吐率: 单位时间内网络上传输的数据量 吞吐率=吞吐量/传输时间\
10. 点击率: 每秒钟用户向服务器提交的请求数,这个指标是web应用程序特有的一个指标,可以想象为每秒钟用户总共在页面上进行多少次点击动作,但是需要注意的是一次鼠标单击的操作后,客户端有可能向服务器发送了多次请求
11. 对不同的系统资源的使用情况,如CPU,内存,io

性能测试需求分析

分析的目的:
	明确测试指标
	明确测试场景
新系统
	同行业比较
	业务预期
老系统
	对比以往用户使用行为以及用户量	

性能测试工具

jmeter组成
测试计划
	线程组
        断言
        定时器
        监听器
        配置元件
        后置处理器
        前置处理器
       
    逻辑控制器
    Sampler

初识Jmter

Jmeter实现多并发
	1,线程组:负载发生器,用多线程或多进程的方式来模拟用户的使用行为,Jmeter是以线程的方式来进行模拟用户的并发访问的



jmeter实现逻辑分之控制
	1. 逻辑控制器:用来控制测试脚本的逻辑判断,也可以理解为如何控制脚本的运行,例如:如果控制器,就是当满足什么样的条件后执行哪一步操作

Jmeter实现配置管理
	1. 配置元件: 用来提供一些配置相关的信息,如Http请求头,cookie管理,提供参数化数据,还可以进行用户自定义变量等配置,用来定义常量等

Jmter连接mysql数据库
	jdbc:mysql://172.29.30.95:3306/smartlink_oil?serverTimezone=UTC

linux服务器监控性能测试

服务器性能测试范围:
	测试目的: 发现服务器的性能瓶颈,配置的不同能够承载的最大任务数不同,能够承载的压力不同
测试范围及性能指标:
	cpu, 网络,内存,磁盘,版本
测试环境与生产环境配置不同
	通过多次压测来计算性能损耗
	性能损耗的计算方式: 多次压测后的性能预估

进程与线程区别

1. 进程是具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配盒调度的一个独立单位
2. 线程是进程的一个实体,是cpu调度盒分派的基本单位,比进程更小的能够独立运行的基本单位
3. 一个线程只能属于一个进程,而一个进程可以拥有多个线程
4. 线程是进程工作的最小单位
5. 一个进程会分配一个地址空间,进程与进程之间不共享地址空间,即不共享内存
6. 同一个进程下的不同线程,共享父进程的地址空间
7. 线程在执行过程中,需要写作同步,不同进程的线程间要利用消息通信的办法实现同步
8. 线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
进程优点
	1. 每个进程相互独立,不影响主程序的稳定性,字进程崩溃不影响其他进程
	2. 通过增加CPU,就可以扩充性能
	3. 可以尽量减少线程加锁与解锁的影响,极大的提高了性能
进程缺点:
	1. 逻辑控制复杂,需要和主程序交互
	2. 多进程调度开销大
线程优点:
	1. 程序逻辑和控制方式简单
	2. 所有线程可以直接共享内存和变量等
	3. 线程方式消耗的总资源比进程少
线程缺点
	1. 每个线程与主程序共用地址空间,最大内存地址受限
	2. 线程之间的同步和加锁不易控制
	3. 一个线程的崩溃可能影响到整个程序的稳定性

linux命令

man (函数手册命令,可以查看所有命令)
top: 能够实时监控系统的运行状态,并且可以按照cpu及内存等进行排序
	-h 帮助
	-p 监控指定的进程,当监控多个进程时,进程ID以逗号分隔,这个选项只能在命令行下使用
top任务区命令
	M: 按内存使用率排序
	P: 按CPU使用率排序
	z: 彩色/黑白显示
top中的load average: 系统的运行队列的平均利用率,也可以认为是可运行进程的平均数,三个值分别表示在最后的1分钟,5分钟,15分钟的平均负载值
top说明:在单核cpu中load average的值为1时表示满负荷状态,同理在多核cpu中满负载的load average的值为1*cpu核数

vmstat

vmstat:
	可以监控操作系统的进程状态,内存,虚拟内存,磁盘IO, CPU的信息
	-S : 使用指定单位显示,参数有k, K,m, M,分别代表1000, 1024, 1000000, 1048576字节(byte). 默认单位为K(1024 bytes)

free

free
	能够监控系统内存的使用状态,其中total总计物理内存的大小, Used:已使用多大, Free: 可用多少, shared: 多个进程共享的内存总额, buffers/cached磁盘缓存的大小
free -h 

实时监控-cpu

mpstat
	最大的特点是:可以查看多核心cpu中每个极端核心的统计数据.
	-P 表示监控哪个CPU,cpu在[0, cpu个数-1]中取值
	internal 相邻的两次采样的间隔时间
	count 采样的次数, count只能和delay一起使用
mpstat需注意
	当没有参数时,mpstat则显示系统启动以后所有信息的评均值,有interval时,第一行的信息自系统启动以来的平均信息,从第二行开始,输出为前一个interval时间段的平均信息

网路监控

netstat
	命令用户显示本机网路连接,运行端口,路由表等信息
参数说明
	-n : 拒绝显示别名,能显示数字的全部转化成数字
	-L : 仅列出有在Lisen(监听)的服务状态
	-p : 显示建立相关链接的程序名
	-t : L显示tcp相关选项
	-u : 仅显示udp相关选项
	-i : 显示自动匹配接口信息
	-c : 每隔一个固定时间执行该netstat命令
 netstat -ntlp

磁盘监控

iostat
	是对系统磁盘IO操作进行监控,它的输出主要显示磁盘读写操作的统计信息,同时给出cpu的使用情况
	-X device 输出指定要统计的磁盘设备名称,默认为所有磁盘设备

万能命令

sar命令
	是目前linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告
sar的性能监控范围
	文件的读写情况,系统调用的使用情况,磁盘I/O, CPU效率, 内存使用状况,进程活动及IPC有关的活动等
sar语法
	在命令行中,n和t两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有的参数,n为采样次数,是可选的,默认值是1
sar选项
	-A 所有报告的总和
	-u CPU利用率
	-v :进程,节点,文件,和锁表状态
	-r 显示系统内存的使用情况
	-B 内存分页情况
	-b 缓冲区使用情况

Linux下的进程追踪

strace简介
	命令是一个集诊断,调试,统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果对应用进行分析,以达到解决问题或者是了解应用工作过程的目的
	-p 跟踪指定的进程
	-f 跟踪由fork子进程系统调用
	-c 统计每一系统调用所执行的时间,次数,和出错的次数等
	-t 在输出中的每一行前加上时间信息,-tt时间确定到微秒级
	-e expr 输出过滤器,通过表达式,可以过滤掉你不想要输出
	-o filename 默认strace将结果输出到stdout,通过-o可以将输出写入到filename文件中

linux监控工具

nmon
	是一种在linux操作系统上广泛使用的监控与分析工具,nmon所记录的信息是比较全面的,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文件中,然后通过nmon_analyzer工具产生数据文件与图形化结果

nmon下载与安装

wget 

Linux定时任务

crontab
	linux系统由cron 这个系统服务来控制的,linux系统上包含很多的计划性工作,使用者自己也可以设置计划任务,所以linux系统提供了使用者控制计划任务的命令
crontab的启动
	/sbin/service crond status 查看定时任务的服务是否启动
	start/stop/restart 启动服务/停止服务/重新启动服务
	reload 重新载入配置
crontab的服务权限
	crontab的权限管理存储在cron.allow文件与cron.deny文件中,如果没有可创建在etc目录下
	cron.allow文件存储的是允许那些用户使用crontab
	cron.deny文件存储的是不允许那些用户使用crontab
crontab的使用场景说明
	当两个文件都不存在时,那么只允许root用户使用crontab
	当前cron.allow文件存在,而cron.deny文件不存在时,那么只允许cron.allow文件中的用户使用crontab
crontab的使用场景说明
	当cron.deny文件存在,而cron.allow文件不存在时,那么只要是没有列在cron.deny文件中的用户都可以使用crontab
	如果两个文件都存在,而一个用户在两个文件中都有,那么以cron.allow文件中的为准,只要cron.allow文件用有该用户,则该用户就可以使用crontab

crontab的使用
	命令: crontab -e 在编辑页面输入命令即可
crontab的编辑格式
	基本格式: minute hour day month week command
	对应单位: 分 时 日 月 周 命令\
	第一列表示分钟00-59 每分钟用*或者*/1表示
	第二列表示小时00-23(0表示0点)
	第三列表示日期01-31
	第四列表示月份01-12
	第五列表示星期0-6(0表示星期天)
	第六列表示要运行的命令
	*代表取值范围内的所有值
	/代表每的意思
	-代表从某个数据到某个数字
	,分隔开几个不同的数字

数据驱动

定义: 从数据文件中读取测试数据,驱动测试过程的一种测试方法
数据驱动可以理解为更高级的参数化
特点:
    测试数据与测试代码分离
    数据控制过程
好处
	减少测试代码量
	降低脚本开发和维护的成本
	便于用例的修改和维护(不用修改代码)
要求
	较强的代码能力
	较强的分层架构设计思维
	对开发框架要有一定的了解

数据驱动的使用场景

1. 复杂的业务流程
2. 根据业务场景分流
3. 符合条件的并发场景

Jmeter中的数据驱动

控制方式:
	1. 参数化 (csv, txt, 数据库)
	2. 逻辑控制器

Jmeter数据驱动实战

场景:
	登录后男人浏览电子商品
	登录后女人浏览化妆品

Jmeter数据库配置

jdbc:mysql://172.29.30.95:3306/smartlink_oil
com.mysql.jdbc.Driver

数据库性能测试

1. 数据库性能测试的目的及范围
	1) 发现数据库相关的所有的性能瓶颈
	2) sql语句-慢查询等
	3) 资源使用率
	4) 数据库架构合理性
	5) 数据库的性能指标
2. 数据的常用架构
	1) 一主多从(读写分离),分担了单台服务器的压力 缺点存在主从延时(网络延时)
	2) 双机热备(修改了主从分离, master挂了后vip就会指向slave,slave就会变身成master), 缺点:服务器压力大
3. 数据库主从同步的工作原理
	1) master将改变记录到二进制日志(binary log)中
	2) slave将master的binary log events拷贝到他的日志中(relay log)
	3) slave重做中继日志中的事件,将改变反应它自己的数据
4. 数据库分库分表的设计方法
	拆分原因
		1) 单表或数据量太大
		2) 硬件不能升级或无法升级
	分库分表方案
		1) 业务拆分
		2) 垂直拆分
		3) 水平拆分-一致性哈希算法

mysql性能测试

1. Mysql数据库介绍
2. Mysql数据库监控指标
3. Mysql慢查询工作原理及操作
4. Sql的分析与调优方法
5. MySQL索引的概念及作用
6. Mysql索引的工作原理与设计规范
7. Mysql存储引擎
8. Mysql实时监控
9. Mysql集群监控方案

主要内容

1. MySQl性能测试用例准备
2. 使用Jmeter开发MySql性能测试脚本
3. 执行测试

主流分支

MariaDb 目标在于替换现有Mysql
兼容Mysql 对于开发者来说感知不到变化
免费开源

Msql数据库重点监控指标

QPS: 每秒钟查询数量
    show global status like 'Question%';
    Queries/seconds
TPS : 每秒钟事务数
	Tps= (Com_commit + Com_rollback)/seconds
	show global status like 'Com_commit'
	show global status like 'Com_rollback'
线程连接数
	show global status like 'Max_used_connections';
	show gloabal status like 'Threads%'
最大连接数
	show variables like 'max_connections'
Query Cache
	查询缓存用于缓存select查询结果
	当下次接收到相同查询请求时,不在执行实际查询处理而直接返回结果
	适用于大量查询,很少改变表中数据
	修改my.cnf
	将query_cache_size设置为具体的大小,具体大小是多少取决于查询的实际情况,单最好设置为1024的倍数,参考值32M
	增加一行:query_cache_type=0/1/2
	如果设置为1,将会缓存所有的结果,除非你的select语句使用SQL_NO_CACHE禁用了查询缓存
	如果设置为2,则只缓存在select语句中,通过SQL_CACHE指定需要缓存的查询
Query Cache 命中率
	show status like 'Qcache%';
	Query_cache_hits = (Qcache_hits/(Qcache_hits+Qcache_inserts))*100%;
锁定状态
	show global status like '%lock%'
	Table_locks_waited/Table_locks_immediate 值越大代表锁造成的阻塞越严重
	Innodb_row_lock_waits innodb 行锁,太大可能是间隙锁造成的
主从延时
	查询主从延时的时间 show slave status
Mysql慢查询
	执行速度超过定义时间的查询
	不同系统定义不同的慢查询指标
慢查询开启
	编辑 /etc/my.cnf 在[mysqld]域中添加
	开始慢查询:slow_query_log = 1
	慢查询日志路径: slow_query_log_file=/data/mysql/slow.log
	慢查询的时长 long_query_time = 1
	未使用索引的查询也被记录到慢查询日志中
	log_queries_not_using_indexes=1
慢查询日志分析
	mysqldumpslow命令
	-s 表示按照何种方式排序
	-t topn的意思,即返回前面多少条数据
	-g 后边可以写一个正则匹配,大小写不敏感的
	-s  c 访问计数
	-s  l 锁定时间
	-s  r 返回记录
	-s  t 查询时间
	-s  al 平均锁定时间
	-s  ar 平均返回记录数
	-s  at 平均查询时间
慢查询分析举例
	得到返回记录集最多的10个SQL
		mysqldumpslow -s r -t 10 slow.log
	得到访问次数最多的10个SQl
		mysqldumpslow -s c -t 10 slow.log
	得到按照时间排序的前10条里面含有左连接的查询语句
		mysqldumpslow -s t -t 10 -g "left join" slow.log

SQl语句性能分析

explain执行计划
	用法: explain select语句
explain返回结果分析
	id: select识别符,代表语句的执行顺序,一般在select嵌套查询时会不同
	id: 列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行
	id列为null的就表示这是一个结果集,不需要使用它来进行查询
select_type
	simple表示不需要union操作或者不包含子查询的简单select查询,有连接查询时,外层的查询为simple,且只有一个
	primary:一个需要要union操作或者含有子查询的select,位于最外层的单位查询的select_type即为primary,且只有一个
	union:union连接的两个select查询,第一个查询是dervied派生表,除了第一个表外,第二个以后的表select_type都是		union
	dependent union:与union一样,出现在union或union all语句中,但是这个查询要受到外部查询的影响
	union result:包含union的结果集,在union和union all 语句中,因为它不需要参与查询,所以id字段为null
	subquery 除了from字句中包含的子查询外,其他地方出现的子查询都可能是subquery
	dependent subquery: 与dependent union类似,表示这个subquery的查询要受到外部表查询的影响
	derived: from 字句中出现的子查询,也叫做派生表,其他数据库中可能叫做内联视图或者嵌套select
table
	显示查询表名
	如果查询使用了别名显示别名
	如果不涉及对数据表的操作,那么这显示为null
	如果显示为尖括号括起来的<derived N>就表示这个是临时表
type
	依次从好到差,system,const,eq_ref,ref,fulltext,ref_or_null,unique_subquery,index_subquery,range,index_merge,index, ALL
	除了all之外,其他的type都可以使用索引,除了index_merge之外,其他的type只可以用到一个索引
	system:表中只有一行数据或者是空表,且只能用于myisam和memory表,如果是Innodb引擎表,type列在这个情况通常都是all或者index
	const: 使用唯一索引或者主键,返回记录一定是1行记录的等值where条件时,通常type时const,其他数据库也叫做唯一索引扫描
	eq_ref: 出现在要连接过个表的查询计划中,驱动表只返回一行数据,且这行数据是第二个表的主键或者唯一索引,且必须为not null, 唯一索引和主键是多列时,只有所有的列都用作比较时才会出现eq_ref
	ref: 不像eq_ref那样要求连接顺序,也没有主键和唯一索引的要求,只要使用相等条件检索时就可能出现,常见与辅助索引的等值查找,或者多列主键,唯一索引中,使用第一列之外的列作为等值查找也会出现,总之,返回数据不唯一的等值查找就可能出现
	fulltext: 全文索引检索,要注意,全文索引的优先级很高,若全文索引和普通索引同时存在时,mysql不管代价,优先选择使用全文索引
	ref_or_null 与ref方法类似,只是增加了null值比较,实际用的不多
	unique_subquery:用于where中的in形式子查询,子查询返回不重复值唯一
	index_subquery:用于in形式子查询使用到了辅助索引或者in常数列表,子查询可能返回重复值,可以使用索引将子查询去重
	range:索引范围扫描,常见于使用>,<,is null, between,in,like等运算符的查询中
	index_merge:表示查询使用了两个以上的索引,最后取交集或者并集,常见and,or的条件使用了不同的索引,官方排序这个在ref_or_null之后,但实际上由于要读个索引,性能可能大部分的时间都不如range
	index索引全表扫描,把索引从头到尾扫一遍,常见于使用索引列就可以处理不需要读取数据文件的查询,可以使用索引排序或者分组的查询
	all 这个就是全表扫描数据文件,然后再sever层进行过滤返回符合要求的记录
possible_keys
	查询可能使用到的索引都会在这里列出来
key
	查询真正使用到的索引,select_type为index_merge时,这里可能出现两个以上的索引,其他的select_type这里只会出现一个
key_len
	用于处理查询的索引长度,如果是单列索引,那就整个索引长度算进去,如果是多列索引,那么查询不一定都能使用到所有的列,具体使用到了多少个列的索引,这里就会计算进去,没有使用到的列这里不会算进去
ref
	如果是使用的常数等值查询,这里会显示const,如果是连接查询,被驱动表的执行计划这里会显示驱动表的关联字段,如果是条件使用了表达式或者函数,或者条件列发生了内部隐式转换,这里可能显示为func
rows
	这里是执行计划中估算的扫描行数,不是精确值
Extra常见返回
	distinct:在select部分使用了distinct关键字
	no tables used:不带from字句的查询或者Fromdual查询
	using filesort:排序时无法使用到索引时,就会出现这个,常见于orderby和group by语句中
	using index:查询时不需要回表查询,直接通过索引就可以获取查询的数据
	using intersect: 表示使用and的各个索引条件时,该信息表示是从处理结果获取交集
	using union: 表示使用or连接各个使用索引的条件时,该信息表示从处理结果获取并集
	using where: 表示存储引擎返回的记录并不是所有的都满足查询条件,需要在server层进行过滤

索引类型

1. 主键索引
	他是一种特殊的唯一索引,不允许有空值
	一般是在建表的时候同事创建主键索引
2. 唯一索引
	索引列的值必须唯一,但允许有空值
3, 普通索引
	最基本的索引,它没有任何限制
4, 全文索引
	fulltext是一种只适用于MyISAM表的一个索引类型
	被索引列的数据类型只能是以下三种的组合char,varchar,text
	MySql是通过match()和against()这两个函数来实现它的全文索引查询的功能
5, 组合索引
	也叫多列索引,就是在多列上同时创建索引,使得多列的组合值唯一,创建组合索引的好处是比分别创建多个单列索引的查询速度要快很多
	组合索引创建遵循"最左前缀"规则
	如三列id,name,age,创建组合索引,则相当于分别创建了id,name,age,id,name,id这三个索引

索引创建规范

1. 索引是一把双刃剑,它可以提高查询效率但也会降低插入和更新的速度并占用磁盘空间
2. 在插入与更新数据时,要重写索引文件
3. 单张表中索引数量不超过5个
4. 单个索引中的字段数不超过5个
5. 不使用更新频繁的列作为主键
6. 合理创建组合索引(避免冗余)
7, 不在低基数列上建立索引,例如'性别'
8, 不在索引列进行数学运算和函数运算会使索引失效
9. 不使用%前导得查询,如like"%xxx"无法使用索引
10. 不使用方向查询,如not in /not like 无法使用索引,导致全表扫描
11 选择越小得数据类型越好,因为通常较小得数据类型通常在磁盘,内存,cpu,缓存中,占用得空间很少处理起来更快
12, 在经常需要排序(order by)分组(groupby)和distinct列上加索引,(单独order by用不了索引,索引考虑加where或加limit)
13, 在表与表得连接条件上加上索引,可以加快连接查询得速度
14, 使用短索引,如果你的一个字段是Char(32)或者int(32),在创建索引得时候指定前缀长度,比如前10个字符,前提是多数值是唯一得那么短索引可以提高查询速度,并且可以减少磁盘得空间,也可以减少I/O操作

MySQl存储引擎

1. MyISAm
	优点: 1. 读得性能比InnoDB高很多
		 2. 索引与数据分开,使用了压缩,从而提高了内存使用率
	缺点:
		1. 不支持事务
		2. 写入数据时,直接锁表
2. InnoDB
	优点:1. 支持事务
		2. 支持外键
		3. 支持行级锁
	缺点
		1. 不支持fulltext(全文索引)
		2. 行级锁并不绝对,当不确定扫描范围时,锁全表
		3. 索引与数据是紧密捆绑得,没有使用压缩导致体积庞大

实时监控

orzdba

mysql集群监控工具介绍

mysql集群监控-天兔LEPUS
	1. 为所有数据库管理者,互联网企业数据库监控而设计
	2. 无需部署Agent,轻松监控1000+数据库实例,完善灵活得告警配置,详细得性能分析指标

用例准备

要点:
	使用sql模拟用户使用场景
Jmeter开发mysql性能测试准备
	1. JDBC CONNECION Cfig配置
	2. JDBC Request写sql脚本

多协议接口性能测试

常见接口协议
	1. HTTp超文本传输协议
	2. HTTPS 安全超文本传输协议 
		默认端口443
		安全性的ssl加密传输协议
		以安全为目标的http协议通道,可以理解为http协议的安全版
		数据链路层-tcp/ip-ssl/tls(加密方式)-https
	3. FTP 文件传输协议
		默认端口21和20
		http和https都是面向网页的,而ftp是面向文件的
		ftp使用两个并行的tcp连接来进行文件传输
		ftp使用的两个并行tcp连接为控制连接和数据连接
		控制连接负责两个主机之间传输控制信息,如用户表示了,口令,发送的命令等,运行端口为21
		数据连接用户实际传输一个文件,运行端口为20(主动模式)
	4. TCP 网络控制协议
	5. IP 互联网协议
	6. UDP 用户数据协议

性能测试用例设计以及报告

测试用例几要素
	1. 被测系统以及版本
	2, 测试数据
	3. 测试场景(包含异常场景)
	4, 预期结果
	5. 预期性能指标
测试报告
	1. 被测系统
	2. 版本号
	3. 运行环境,配置
	4. 测试场景(并发定义)
	5. 预期性能指标
	6. 实际结果(不通过说明瓶颈,如果通过说明最大性能指标)
	7. 测试结论,测试人员
	8. 容量规划

Jmeter拓展组件开发

火爆大数据

存储: hbase, hive, hdfs
数据传输:flume(海量日志收集的), kafka(是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据)
实时计算: strom, spark
语言: java python scala
集群调度:zookeeper
大数据应用场景
	1. 运营支持: 数据仓库,BI
	2. 风控支撑: 实时计算,数据实时分析
	3. 营销支持:精准营销,实时推荐

kafka基本术语

1. Broker:Kafka集群包含一个或多个服务器,这种服务器被称为broker
2. Topic:每条发布到kafka集群的消息都有一个类别,这个类别被称为Topic
3. partition: 物理上的概念,每个topic包含一个或多个partition
4. producer: 负责发布消息到Kafka broker
5. Consumer: 消息消费者,向kafka broker读取消息的客户端
6. Consumer Group:每个Consumer属于一个特定的Consumer Group

Kafka的基本操作

1. 启动zookeeper bin/zookeeper-server-start.sh start
2. 启动kafka bin/kafka-server-start.sh config/server.properties&
3. 查看topic操作 ./kafka-topics.sh --list --zookeeper localhost:2181
4. 创建topic: bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-facter 2 --partitions4 --topic topic1
5. topic操作:
	partitions指定topic分区数
	replication-factor 指定topic每个分区的副本数
6. 生产与消费
	生产者:./kafka-console-producer.sh --broker-list localhost:9092 --topic topic1
	消费者: ./kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic topic1

strom

1. Strom是一种分布式,实时的数据处理框架,延时时长为毫秒级,而Spark Streaming为秒级,是目前最适用于流式数据处理,最好的框架之一
posted @ 2022-12-26 17:41  jiyanjiao  阅读(191)  评论(0编辑  收藏  举报