8.2.mysql数据表设计

-1. Linux管道机制 命令

linux系统搭建省略:

管道是一种两个进程间进行单向通信的机制。因为管道传递数据的单向性,管道又称为半双工管道。管道的这一特点决定了器使用的局限性。管道是Linux支持的最初Unix IPC形式之一,具有以下特点:

*** 数据只能由一个进程流向另一个进程(其中一个读管道,一个写管道);如果要进行双工通信,需要建 立两个管道。
*** 管道只能用于父子进程或者兄弟进程间通信。,也就是说管道只能用于具有亲缘关系的进程间通信。

注意:从管道读数据是一次性操作,数据一旦被读,它就从管道中被抛弃,释放空间以便写更多的数据。

格式

command1 | command2 | command3

操作符是:”|”,它只能处理经由前面一个指令传出的正确输出信息,对错误信息信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入.
在这里插入图片描述

【指令1】正确输出,作为【指令2】的输入 然后【指令2】的输出作为【指令3】的输入 ,【指令3】输出就会直接显示在屏幕上面了。

通过管道之后【指令1】和【指令2】的正确输出不显示在屏幕上面

【提醒注意】:

  1. 管道命令只处理前一个命令正确输出,不处理错误输出;
  2. 管道命令右边命令,必须能够接收标准输入流命令才行;

-1.1 Linux grep 命令

Linux grep命令用于查找文件里符合条件的字符串。

grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为"-",则grep指令会从标准输入设备读取数据。

-- 语法
grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

参数:

-a 或 --text : 不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 --count : 计算符合样式的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
-E 或 --extended-regexp : 将样式为延伸的普通表示法来使用。
-f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 --fixed-regexp : 将样式视为固定字符串的列表。
-G 或 --basic-regexp : 将样式视为普通的表示法来使用。
-h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 --ignore-case : 忽略字符大小写的差别。
-l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
-L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 --only-matching : 只显示匹配PATTERN 部分。
-q 或 --quiet或--silent : 不显示任何信息。
-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
-s 或 --no-messages : 不显示错误信息。
-v 或 --revert-match : 显示不包含匹配文本的所有行。
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。
-x --line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定"-i"参数相同。

0. Linux下安装MySQL

官网地址 https://dev.mysql.com/downloads/mysql/

MySQL7配置文件 https://dev.mysql.com/doc/refman/5.7/en/option-files.html

-- 下载目录
cd /.
mkdir study
cd study

-- 下载MySQL7的版本
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
-- 下载MySQL8的版本
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz

-- 解压
tar -zvxf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

-- /usr/local 目录下创建文件夹存
mkdir /usr/local/msyql
-- 移动
mv mysql-5.7.26-linux-glibc2.12-x86_64/* /usr/lcoal/mysql

-- 添加mysql组和mysql 用户:
-- 添加mysql组:
groupadd mysql

-- 添加mysql用户:
useradd -r -g mysql mysql

-- 配置MySQL
cd /usr/local/mysql

-- 主:从5.7.18开始不在二进制包中提供my-default.cnf文件
-- 进入MySQL的bin目录
-- 查看MySQL对于配置文件的查找路径,越左优先查找
/bin/mysql --help | grep 'Default options' -A 1

-- 创建配置文件
touch /usr/local/mysql/etc/my.cnf

添加内容

[client]
port=3307
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-grant-tables
port=3307
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
max_allowed_packet=16M
-- 设置开机启动
-- 复制启动脚本到资源目录
cp ./support-files/mysql.server /etc/rc.d/init.d/mysql
-- 增加 mysqld 服务控制脚本执行权限
chmod +x /etc/rc.d/init.d/mysql
-- 将 mysqld 服务加入到系统服务
chkconfig --add mysql
-- 检查mysqld服务是否已经生效
chkconfig --list mysql

-- 启动MySQL
service mysql start

-- 环境变量配置
vim /etc/profile

添加如下内容 大概在52行左右

PATH = $PATH:/usr/local/mysql/bin
export
-- 刷新
source /etc/profile
-- 检测
echo $PATH

-- 修改登入密码
mysql

mysql> usr mysql;
mysql> update user set authentication_string=PASSWORD('你的密码') where User='root';
mysql> alter user 'root'@'localhost' identified by 'root';
mysql> flush privileges;
mysql> quit;

-- 修改/usr/local/mysql/etc/my.cnf 文件
-- 注释skip-grant-tables
-- 重启MySQL
service mysql restart

-- 测试
mysql -u root -p

-- 配置远程访问
-- 防火墙端口设置,便于远程访问
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
-- 查看端口
firewall-cmd --list-ports

启动防火墙服务:systemctl ummask firewalld
启动防火墙:systemctl start firewalld

-- 进入MySQL
mysql> grant all privileges  on *.* to root@'%' identified by "password";
mysql> flush privileges;

-- 如果没有效果可以尝试重启一下MySQL

1. 性能优化介绍与影响因素

1.1 性能优化介绍

什么是性能问题?

对于用户来说:“又卡了”,“怎么死机了”,“反应太慢了”

对于程序员来说:“程序执行的时长”,“每秒查询的次数”,“内存,CPU的利用率”

性能优化的目的:(合理利用可利用的资源 - )抠门

  1. 吞吐量,越大越好
  2. 延时,越低越好

同样的资源下(前提),吞吐量越高越好,响应时间越低越好。通俗的讲就是:多快好省。
在这里插入图片描述

性能的参考指标
执行时间:一段代码从开始运行到运行结束所使用的时间。
CPU时间:(算法)函数或者线程占用CPU的时间。
内存分配:程序在运行时占用的内存空间。
磁盘吞吐量:描述I/O的使用情况。
网络吞吐量:描述网络的使用情况。
响应时间:系统对某用户行为或者动作做出响应的时间。响应时间越短,性能好。
1.1 性能优化的权重:

数据设计》数据表设计》SQL语句》程序优化》硬件配置资源

2. 问题发现

RAM,ROM,CPU,GPU

通俗点讲:RAM相当于系统的内存条,内存越大,可同时运行的任务越多;ROM相当于硬盘,类似于U盘;CPU是手机的运算核心和控制核心。手机中所有操作都由CPU负责读取指令,对指令译码并执行指令的核心部件;GPU被称为“图形处理器”是显示卡的“心脏”,也就相当于CPU在电脑中的作用,它决定了该显卡的档次和大部分能力。 纯手打,如有解释不当之出,请楼主指出。

CPU是中央处理器,是手机快慢的重要指标

GPU只有少数手机有,是图形处理器,和手机的3D性能、高清视频解码能力有关

ROM是相当于电脑硬盘一样的东西,是内置存储器,“硬盘”大,装的东西就多

RAM就是平时我们所说的“内存”,是一个临时存放给CPU处理的数据的地方,越大越好,512MB-1GB就不错了

2.1 影响mysql性能最大的因素,优化方向的思路

内存、I/O、CPU、网络带宽、Mysql进程状态、Mysql服务器周期变化。

数据表设计=》SQL语句优化=》数据参数配置=》硬件资源优化

系统性能评估标准

影响性能因素评判标准
糟糕
CPUuser% + sys% < 70% user% + sys% = 85% user% + sys% >= 90%
内存Swap In(si) = OSwap Out(so) = 0Per CPU with 10 page/sMore Swap in & Swap Out
磁盘iowait% < 20%iowait% = 35%iowait% >= 50%
2.2 linux基本监控系统方法
2.2.0 ps命令
2.2.1 ps命令

要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到的.
ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了.

ps命令的常用参数如下所示。

命令作用
-A显示所有进程
-a显示一个终端的所有进程,出了会话引线
-N忽略选择
-d显示所有进程,但省略所有的会话引线
-e列出程序时,显示每个程序所使用的环境变量
-ppid 进程使用cpu的实际
-u选择有效的用户id或者用户名
-x显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用
-g显示组的所有进程
-f全部列出,通常和其他选项联用
-l长格式
-j作业格式

列如:运行ps -au命令显示有效用的用户进程信息。
在这里插入图片描述

在命令中:

  1. %CPU 表示cpu(代表每个处理器的整体使用率)的使用率,如果持续一段时间里CPU的使用率大于80%,这就可能表名CPU出现瓶颈。
  2. %mem 表示内存的占用率

stat中的参数意义:

  D 不可中断 Uninterruptible(usually IO)
  R 正在运行,或在队列中的进程
  S 处于休眠状态
  T 停止或被追踪
  Z 僵尸进程
  W 进入内存交换(从内核2.6开始无效)
  X 死掉的进程

  < 高优先级
  n 低优先级
  s 包含子进程
  + 位于后台的进程组

最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。

再列如使用ps -ef命令查询所有进程及其环境变量信息,如下:
在这里插入图片描述

如果需要终止某一个进程可以使用kill命令

kill -kill [pid]
--强制终止进程
kill -9 [pid]
2.2.2 top命令

top命令是linux操作系统下最常用的性能分析工具,能够实时地显示操作系统中哥哥进程消耗资源的情况。该命令可以显示CPU是引用、内存使用和执行时间,下面执行top命令看下执行情况:
在这里插入图片描述

下面分析一下top命令的统计信息的含义。

top - 14:37:15 up 37 min,  1 user,  load average: 0.08, 0.04, 0.09

top命令第1行信息,

  • 14:37:15 表示系统运行的当前时间
  • up 3 min 表示系统运行时间
  • 1 user 表示登录用户的数量。
  • load average: 0.08, 0.04, 0.09 表示系统负载,既任务队列的平均长度,三个数值分别1分钟,5分钟,15分钟到现在的平均值。

第2,3行两汉分别表示进程和CPU的性能的一些信息。

Tasks: 171 total,   1 running, 169 sleeping,   0 stopped,   1 zombie
%Cpu(s):  0.1 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

统计信息的含义:

  • Tasks: 171 total 表示进程总数
  • 1 running 正在运行的进程数量
  • 169 sleeping 睡眠的进程数量
  • 0 stopped 停止的进程数量
  • 1 zombie 表示僵尸进程数量
  • 0.1 us 表示用户空间占用CPU的百分比(如果用户时间值很高,表明系统正在执行实际的工作)
  • 0.2 sy 表示内核空间占用CPU的百分比,包括终端,(系统时间值持续很高表名网络或驱动器堆栈可能存在瓶颈。通常,系统只会花费很少时间在内核时间上)
  • 0.0 ni 表示用户进程空间改变过优先级的进程占用CPU的百分比
  • 99.7 id 表示空闲cpu(这个值越大表明系统CPU的负荷越小)
  • 0.0 wa I/O等待 表示等待输入输出的cpu(等待I/O操作所需要的CPU时间总合,系统不应该花费过多的时间等待I/O操作,否则你应该检查一下I/O子系统各方面的性能)

top 显示出现的每个列的含义分别为:

  PID: 进程描述符
  USER: 进程的拥有者
  PRI:进程的优先级
  NI: nice level
  SIZE: 进程拥有的内存(包括code segment + data segment + stack segment)
  RSS: 物理内存使用
  VIRT(virtul memory usage): 进程需要的虚拟内存大小
  RES(resident memory usage): 常驻内存
  SHARE: 和其他进程共享的物理内存空间
  STAT:进程的状态,有 S=sleeping,R=running,T=stopped or traced,D=interruptible sleep(不可中断的睡眠状态),Z=zombie。
  %CPU: CPU使用率
  %MEM: 物理内存的使用
  TIME: 进程占用的总共cpu时间
  COMMAND:进程的命令

备注:ctrl + z 结束运行

2.2.3 vmstat命令在这里插入图片描述

首先,分析下进程(procs)的两列信息,如下所示。

  • r列表式可运行进程的数量
  • b列表式阻塞进程的数量

内存性能优4个报告虚拟内存如何使用的字段

  • swpd已经使用的交换空间的数量
  • free 自由RAM数量
  • buff 缓存使用的RAM的数量
  • cache 文件系统缓存使用的RAM数量

swap交换字段进行详细说明

  • si 表示从磁盘分页到内存的数量
  • so 表示从内存分页到磁盘的数量。

其余相关的系统命令:sar、iostat、netstat、free等

2.3 mysql性能检测

MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候。磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在网络上,那么查询量相当大的时候那么平瓶颈就会出现在网络上,我们可以用mpstat, iostat, sar和vmstat来查看系统的性能状态。

2.3.1 性能检测常用命令
2.3.1.1 show status
-- 用来查看MySQL在运行过程中的属性状态
show status;
show status like '%变量%';

基本查看会话状态

-- 查看当前会话情况
show status like 'Com_%';
-- 查看全局会话情况
show global status like 'Com_%';
-- 查看针对innodb存储引擎状态的统计
show global status like 'Innodb_%';
-- 查看视图连接MySQL服务器次数
show global status like 'connections';
-- 查看服务器工作时间
show global status like 'uptime';
-- 查看锁使用情况
show global status like 'innodb_row_lock%';
2.3.1.2 show processlist

processlist 命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句,两种方式使用这个命令。

show processlist;

在这里插入图片描述

第一列,
id , 不用说了吧,一个标识,你要 kill 一个语句的时候很有用。
user列, 显示单前用户,如果不是 root ,这个命令就只显示你权限范围内的 sql 语 句。
host 列,显示这个语句是从哪个 ip 的哪 个端口上发出的。呵呵,可以用来追踪出问题语句的用户。
db 列,显示这个进程目前连接的是 哪个数据库 。
command 列,显示当前连接的执行的命令,一般就是休眠( sleep ),查询( query ),连接( connect )。
time 列,此这个状态持续的时间,单位是秒。
state 列,显示使用当前连接的 sql 语句的状态,很重要的列,后续会有所有的状态的描述,请注意, state 只是语句执行中的某一个状态,一个 sql 语 句,已查询为例,可能需要经过 copying to tmp table ,Sorting result , Sending data 等状态才 可以完成,
info 列,显示这个 sql 语 句,因为长度有限,所以长的 sql 语句就显示不全,但是一个判断问题语句的重要依据。

2.3.1.3 show variables

查看MySQL系统的变量

show variables;

--查看当前session级别的隔离方式
show variables like '%isolation%';
-- 查看isolation帮助
help isolation
-- 局部修改
set session transaction isolation level READ COMMITTED;
show session variables like '%isolation%';

-- 全局修改
show global variables like '%isolation%';
set global transaction isolation level READ COMMITTED;
2.3.2 MySQL自带性能调优工具 mysqlslap

mysqlslap是mysql自带的基准测试工具,优点:查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较.msqlslap为mysql性能优化前后提供了直观的验证依据,建议系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的掌握线上数据库支撑的用户流量上限及其抗压性等问题。

语法
# mysqlslap [options]

--auto-generate-sql, -a 自动生成测试表和数据,表示用mysqlslap工具自己生成的SQL脚本来测试并发压力。
--auto-generate-sql-load-type=type 测试语句的类型。代表要测试的环境是读操作还是写操作还是两者混合的。取值包括:read,key,write,update和mixed(默认)。
--auto-generate-sql-add-auto-increment 代表对生成的表自动添加auto_increment列,从5.1.18版本开始支持。
--number-char-cols=N, -x N 自动生成的测试表中包含多少个字符类型的列,默认1
--number-int-cols=N, -y N 自动生成的测试表中包含多少个数字类型的列,默认1
--number-of-queries=N 总的测试查询次数(并发客户数×每客户查询次数)
--query=name,-q 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。
--create-schema 代表自定义的测试库名称,测试的schema,MySQL中schema也就是database。
--commint=N 多少条DML后提交一次。
--compress, -C 如果服务器和客户端支持都压缩,则压缩信息传递。
--concurrency=N, -c N 表示并发量,也就是模拟多少个客户端同时执行select。可指定多个值,以逗号或者--delimiter参数指定的值做为分隔符。例如:--concurrency=100,200,500。
--engine=engine_name, -e engine_name 代表要测试的引擎,可以有多个,用分隔符隔开。例如:--engines=myisam,innodb。
--iterations=N, -i N 测试执行的迭代次数,代表要在不同并发环境下,各自运行测试多少次。
--only-print 只打印测试语句而不实际执行。
--detach=N 执行N条语句后断开重连。
--debug-info, -T 打印内存和CPU的相关信息。

测试的过程需要生成测试表,插入测试数据,这个mysqlslap可以自动生成,默认生成一个mysqlslap的schema,如果已经存在则先删除。可以用–only-print来打印实际的测试过程,整个测试完成后不会在数据库中留下痕迹。

测试

mysqlslap --help

单线程测试。测试做了什么。
mysqlslap -a -u root -p
多线程测试。使用–concurrency来模拟并发连接。
mysqlslap -a -c 100 -u root -p

打印参数解释:
Benchmark
	Average number of seconds to run all queries: 0.344 seconds  ## 100个客户端(并发)同时运行这些SQL语句平均要花0.351秒
	Minimum number of seconds to run all queries: 0.344 seconds
	Maximum number of seconds to run all queries: 0.344 seconds
	Number of clients running queries: 100 ## 总共100个客户端(并发)运行这些sql查询
	Average number of queries per client: 0 ## 每个客户端(并发)平均运行50次查询(对应--concurrency=100

测试100个并发线程,测试次数1次,自动生成SQL测试脚本,读、写、更新混合测试,自增长字段,测试引擎为innodb,共运行5000次查询
mysqlslap -u root -p -c 100 -i 1 -a --auto-generate-sql-load-type=mixed --auto-generate-sql-add-autoincrement -e innodb --number-of-queries=5000

mysqlslap -h 127.0.0.1 -u root -p -c 100 -i 1 --create-schema tipaskx -q "select count(*) from ask_users" -e innodb --number-of-queries=5000

注意这里:在进行-c测试的时候容易出现

执行
mysqlslap -a -c 1000 -u root -p

出现
mysqlslap: Error when connecting to server: 1040 Too many connections

这个问题的主要是连接的超过了最大的连接次数导致的,解决办法修改MySQL的配置文件my.cnf或my.ini 设置max_connections 的值然后重启;

-- 查看连接数
show variables like 'max_conn%';

3. 性能测试工具介绍与使用

3.1 ab

ab官网 http://httpd.apache.org/docs/2.0/programs/ab.html

Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx、lighthttp、IIS等其它Web服务器的压力。

ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载,因此是某些DDOS攻击之必备良药,老少皆宜。自己使用也须谨慎。否则一次上太多的负载,造成目标服务器直接因内存耗光死机,而不得不硬重启,得不偿失。

操作

cd \xxx\xxx\xxx\Apache\bin

ab -n 800 -c 800 http://127.0.0.1/phpinfo.php
(-n发出800个请求,-c模拟800并发,相当800人同时访问,后面是测试url)

ab -t 60 -c 100 http://127.0.0.1/phpinfo.php
在60秒内发请求,一次100个请求。
3.2 JMete

JMeter是一个java应用程序,可以加载其他应用并测试其性能。它虽然是设计用来测试Web应用的,但也可以用于测试其他诸如FTP服务器,或者通过JDBC进行数据库查询测试。

JMeter比ab要复杂的多。例如他可以通过控制预热时间等参数更加灵活地模拟真实用户的访问。JMeter拥有绘图接口,还可以对测试进行记录,然后离线重演测试结果。

官网地址 http://jakarta.apache.org/jmeter/

对于SQL执行的性能检测方法: http://jmeter.apache.org/usermanual/build-db-test-plan.html

MySQL-jar地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java

结果分析:

结果树
在这里插入图片描述

  • 取样器结果:返回值报200,表示执行接口调试成功
  • 请求:发送的数据
  • 响应数据:返回的数据
  • Thread Name:线程组名称
  • Sample Start: 启动开始时间
  • Load time:加载时长
  • Latency:等待时长
  • Size in bytes:发送的数据总大小
  • Headers size in bytes:发送数据的其余部分大小
  • Sample Count:发送统计
  • Error Count:交互错误统计
  • Response code:返回码
  • Response message:返回信息
  • Response headers:返回的头部信息

聚合报告
在这里插入图片描述

  • Label:httpRequest name属性值。
  • Samples:测试的过程中一共发出了多少个请求即总线程数,(如果模拟10个用户,每个用户迭代10次,这里就显示100),对应图形报表中的样本数目。
  • Average:单个Request的平均响应时间,计算方法是总运行时间除以发送到服务器的总请求数,对应图形报表中的平均值。
  • Median:50%用户的响应时间。
  • 90%Line:90%用户的响应时间。
  • Min:服务器响应的最短时间。
  • Max:服务器响应的最长时间。
  • Error%:本次测试中出错率,请求的数量/请求的总数。
  • Throughput:吞吐量,默认情况下表示每秒完成的请求数。
  • KB/Sec:每秒从服务器接收到的数据量,即每秒钟请求的字节数,时间单位均为ms。

图形结果
在这里插入图片描述

  • 样本数目:总共发送到服务器的请求数。
  • 最新样本:代表时间的数字,是服务器响应最后一个请求的时间。
  • 吞吐量:服务器每分钟处理的请求数。
  • 平均值:总运行时间除以发送到服务器的请求数。
  • 中间值:有一半的服务器响应时间低于改值而另一半高于该值。
  • 偏离:表示服务器响应时间变化、离散程度测量值的大小。
1 根据聚合报告以及图形结果各项参数指标分析

(1)每间隔一秒钟并发的线程数越多,接口99%Line参数值先增加后减小,1500个线程时基本达到峰值;
(2)每间隔一秒钟并发的线程数越多,吞吐量先减后增,每秒钟完成的请求数减幅较大。

2 据图形结果分析

(1)随着发送到服务器的请求数越来越多,偏离数量越来越大,服务器越来越不稳定;
(2)发送到服务器的请求数增加,吞吐量(即服务器每分钟处理的服务器的请求)先减少后增加。

总结:

一般情况下,当用户能够在2秒以内得到响应时,会感觉系统的响应很快;当用户在2-5秒之间
得到响应时,会感觉系统的响应速度还可以;当用户在5-10秒以内得到响应时,会感觉系统的
响应速度很慢,但是还可以接受;而当用户在超过10秒后仍然无法得到响应时,会感觉系统糟
透了,或者认为系统已经失去响应,而选择离开这个Web站点,或者发起第二次请求。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值