性能与调优那些事儿
2019-08-29 16:26:27 44 举报
AI智能生成
性能测试
作者其他创作
大纲/内容
性能测试工具
Loadrunner
组件
场景设置
结果分析
Jmeter
组件介绍
测试计划
线程组
取样器
逻辑控制器
前置处理器
后置处理器
断言
定时器
配置元件
监听器
函数助手
第三方插件jmeter-plugins.org
下载地址
使用方法
常用插件
Transactions per Second:图形显示TPS
Response Times Over Time:图形显示响应时间
Stepping Thread Group:梯度设置场景
性能测试场景
基准测试
简述
测试目的
测试方法
单场景测试
简述
测试目的
测试方法
负载测试
简述
测试目的
测试方法
容量测试
简述
测试目的
测试方法
配置测试
简述
测试目的
测试方法
健壮性测试/恢复性测试
简述
测试目的
测试方法
集合点测试
简述
测试目的
测试方法
浪涌测试
简述
测试目的
测试方法
稳定性测试
简述
测试目的
测试方法
破坏性测试
简述
测试目的
测试方法
环境检查
操作系统
常规系统
机型
CPU
超线程
内存
存储
操作系统
SWAP
核心参数
时区
Docker
中间件
数据库
应用
web
F5
业务模型设计
业务场景
日常业务场景
高峰业务场景
异常峰值场景
选取方法
数据选取
时间段选取
类似系统数据分析
规划数据分析
交易或功能点选取
TOP原则
特殊交易原则
内外部系统覆盖原则
等价类规则
性能测试指标
用户数
并发用户数
估算方法一-公式(一)
平均并发用户数
峰值并发用户数
估算方法二-公式(二)
估算方法三-影响因子
估算方法四-PV流量
估算方法五-经验值
平均并发用户数
峰值并发用户数
在线用户数
估算方法一-公式
估算方法二-分析日志
估算方法三-设计需求
估算方法四-经验值
响应时间
系统响应时间
平均响应时间
90%交易响应时间
最大、最小响应时间
估算方法
用户响应时间
吞吐量
系统处理能力(吞吐率)
TPS
日常系统处理能力
规划值估算法
生产交易量估算法
高峰系统处理能力
规划值估算法
生产交易量估算法
经验公式计算-二八原则
CPS
正常不用,涉及CPS测试会转成多个TPS请求进行测试
点击率
交易成功率
99%-100%
资源使用率
CPU使用率
一般75%-80%,资源非独享,需适当降低
内存使用率
Memory
一般80%-90%
SWAP
网络使用率
磁盘使用率
性能测试监控
linux
nmon
sitescope
windows
Docker
Grafana
性能测试脚本
Loadrunner
语法
脚本样列
HTTP
webservice
TCP/SOCKET
FTP
JAVA
tuxedo
MQ
JAVA设置
导入Jar包
设置JVM
参数化
顺序(Sequential)
每次迭代(Each iteration)
每迭代一次取一行值,从第一行开始取。当所有的值取完后,再从第一行开始取
每次出现(Each occurrence)
每出现一次取一行值,从第一行开始取。当所有的值取完后,再从第一行开始取
只取一次(once)
每次迭代都取参数化文件中第一行的数据。
随机(Random)
每次迭代(Each iteration)
每次迭代从参数化文件中随机选择一行数据进行赋值
每次出现(Each occurrence)
每次出现从参数化文件中随机选择一行数据进行赋值
只取一次(once)
第一次迭代时随机从参数化文件中取一行数据,后面每次迭代都用第一次迭代的数据。
唯一(Unique)
每次迭代(Each iteration)
第一次迭代取参数化文件中的第一条数据,第二次迭代取第二条数据,以此类推。
每次出现(Each occurrence)
第一次出现取参数化文件中的第一条数据,第二次出现取第二条数据,以此类推。
只取一次(once)
按用户数,从第一行开始,每个用户取一行数据,后续重复使用该数据
可能存在数据列表数据不够情况,需设置when out of values
when out of values
Abort Vuser:中断虚拟y用户
Countinue in a cylic manage:循环取参数化文件中的值,即:当参数化文件中的值取完后又从参数化文件的第一行开始取值
Countinue with last value:继续用最后一条数据
概念
事务
断言
Jmeter
请求
断言
参数化
导入Jar包
分布式部署
kubernetes
概念
命令
Docker
基础概念
容器/Docker
Docker基础架构和组件
Docker存储方案
Docker网络
命令
Linux速成
bash介绍
bash的变量
bash环境变量
数据流重定向
linux命令
文件管理
chgrp/chown/chmod:文件/目录基本属性
查看命令:ls -l
文件属主和属组
更改文件属性
chgrp:更改文件属组
chown:更改文件属主,也可以同时更改文件属组
chmod:更改文件9个属性
浏览文件
ls:显示目录文件
cat
more
tail
less
查找文件
find
whereis
操作文件
touch
rm
cp
mv
cut
ln
子主题
文档编辑
文件传输
磁盘管理
目录
mkdir
rmdir
rm -rf
网络命令
vi/vim命令
Windows命令
CPU
进程和CPU原理
进程与线程
CPU调度
中断系统
CPU缓存
性能指标
平均负载
CPU使用率
CPU缓存命中率
性能分析
top
ps
vmstat
mpstat
sar
pidstat
strace
perf
proc文件系统
性能问题
调优方法
CPU绑定
进程CPU资源限制
进程优先级调整
中断负载均衡
CPU缓存
NUMA优化
内存
内存原理
性能指标
性能分析
性能问题
调优方法
网络
网络原理
性能指标
性能分析
性能问题
调优方法
磁盘
磁盘原理
性能指标
性能分析
性能问题
调优方法
文件
文件系统原理
性能指标
性能分析
性能问题
调优方法
内核
内核原理
性能分析
性能问题
内核调优
JVM
监控
垃圾回收器和内存分配策略
配置
性能问题
调优方法
中间件
tomcat
weblogic
nginx
apache
MQ
数据库
MYSQL
索引
索引是什么
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。
可以得到索引的本质:索引是数据结构。
可以得到索引的本质:索引是数据结构。
分类
单值索引
唯一索引
复合索引
聚簇索引(聚集索引)
非聚簇索引
慢查询
慢查询配置
慢查询开启
命令
showvariables like ‘%general%’;
show variables like '%slow_query_log%'
slow_query_log_file
慢查询时间
long_query_time
未使用索引监控
log_queries_not_using_indexes
数据库版本查询
showvariables like ‘%version%’;
慢查询日志格式
showvariables like ‘%log_output%’;
慢查询分析工具
mysqldumpslow自带
mysqldumpslow -s r -t 10 slow-mysql.log
pt-query-digest
慢查询记录
show global status like '%Slow_queries%';
慢查询分析
#User@Host: root[root] @localhost [127.0.0.1] Id:10
# Query_time:0.0005
#Lock_Time:0.1212
#Rows_sent:2
#Rows_examined:2
SET timestamp=1535462721
Select * from table
查询/设置
查询系统支持的存储引擎
SHOW ENGINES;
查询默认存储引擎
SHOW VARIABLES LIKE '%storage_engine%'
查询最大连接数
show VARIABLES like '%max_connections%'
设置最大连接数
set GLOBAL max_connections = 200
是否开启缓存
SHOW VARIABLES LIKE '%query_cache_type%'
设置缓存大小
SET GLOBAL query_cache_size = 4000
查询是否开启innodb独立表空间
show VARIABLES like 'innodb_file_per_table'
设置独立表空间开启关闭
set global innodb_file_per_table=off
查询innodb的redo日志缓存大小
show VARIABLES like 'innodb_log_buffer_size'
查询innodb日志存放多少个
show VARIABLES like 'innodb_log_files_in_group'
查询innodb日志每个大小最大多少
SHOW VARIABLES LIKE 'innodb_log_file_size'
显示memory引擎的存储大小
show VARIABLES like 'max_heap_table_size'
执行计划
什么是执行计划
具体作用
表读取顺序
数据读取操作的操作类型
哪些索引可以使用
哪些索引被实际使用
表之间的引用
每张表有多少行被优化器查询
语法
explain + sql 语句
EXPLAIN SELECT * FROM user WHERE nid = 3;
字段详解
id
select_type
table
type
System
const
eq_ref
Ref
Range
Index
ALL
possible_keys
key
key_len
ref
rows
Extra
SQL优化
尽量全值匹配
最佳左前缀法则
不在索引列上做任何操作
范围条件放最后
覆盖索引尽量用
不等于要甚用
Null/Not 有影响
Like查询要当心
字符类型加引号
OR改UNION效率高
ORACLE
oracle服务配置
设置SGA
数据高速缓存
缓存块
脏缓存块
命中缓存块
空闲缓存块
缓冲区
保持缓冲区
再生缓冲区
默认缓冲区
管理缓冲块方式
DIRTY
LRU(Least Recently Used)
重做日志高速缓存
共享池
数据字典缓存
库缓存
更改优化模式
analyze table CASE_GA_AJZLZ compute statistics;
调整性能参数
排序参数
关键参数
AWR报告
CPU
内存
RAC集群
CDB
可插拔数据库
PDB
数据库容器
oracle优化
SQL语句尽量用大写
使用表别名
选择最有效的表名顺序(只在基于规则的优化器(RBO)中有效
WHERE子句中的连接顺序
SELECT子句中避免使用 *
减少访问数据库次数
整合简单、无关联数据库访问
重新设置ARRAYSIZE参数
高效删除重复记录方法
DELETE FROM TEMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM TEMP1 X WHERE X.TEMP_NO = E.TEMP_NO)
减少子查询对表的查询
避免使用耗费资源的操作
DISTINCT、UNION、MINUS、INTERSECT、ORDER BY
优化GROUP BY
根据需要使用UNION ALL替换UNION
用EXISTS替换DISTINCT
尽量多使用COMMIT
用WHERE子句替换HAVING子句
用TRUNCATE替代DELETE
使用DECODE函数来减少处理时间
用EXISTS替代IN、用NOT EXISTS替代 NOT IN
用索引提供效率
用>=替代>
避免在索引列上使用NOT
避免在索引列上使用计算
用UNION替换OR(适用于索引列)
避免在索引列上使用IS NULL 和IS NOT NULL
总是使用索引的第一个列
避免改变索引列的类型
WHERE 子句不适用索引‘!=’,‘||’,‘+’,相同的索引列不能互相比较
查‘低效执行’的SQL语句
DB2
INFORMIX
0 条评论
下一页