一:前端性能指标
1.响应时间:快不快
2.响应的吞吐量:每秒钟服务器的响应的大小,即网路上传输的大小,两个指标:
(1)服务器带宽
明确:位(bit)最小单位,字节(byte)等于8个比特,KB=1024个字节,1MB=1024*1024B=1024*1024字节
带宽100M指的是每秒钟可传输多少位,单位(位/秒) 100M=1000k=(1000*1000)bit位=(100M/8)字节=12.5M字节每秒;
吞吐量指的是每秒钟传输多少字节,如为每秒钟32K字节=0.032M字节;
结论:吞吐量小于带宽,说明带宽够用;每个用户的带宽就是0.032M/10=0.0032M=3.2K
(2)客户端带宽
例如1000个用户,服务器带宽100m就是1秒钟12.5m字节,吞吐率是10m字节/S 那么10M<12.5M,带宽够用;
如果10M/虚拟用户数,就是每个用户的带宽10kb/s
3.每秒的事务数处理量(TPS):
(1)每秒钟处理事务的数量,脚本中怎么定义的事务,就是什么事务,TPM每分钟的事务处理量;
(2)直接和我们的性能需求相关的,如果一次登陆就是一个事务,我们需要每天500次的登陆,系统支持500个事务。
4.点击率(HPS)-用户每秒发送的HTTP请求的数量
意义不到,评价客户端发送请求的多少,虚拟用户越多点击率越多;服务器处理速度越快,处理速度也快,点击率也越大。
二:后端性能指标
1.CPU
(1)CPU使用率:%Processor Time
(2)CPU处理器队列长度:(CPU忙时,需要排队的长度)Processor Queue Length <2*内核数 如果是4核的,小于2*4=8个;
2.带宽:
(1)每秒接收的数据量,从客户端接收到数据量,低于下行带宽/8 Byte Receive/sec ;
(2)每秒发送的数据量,发给客户端的数据量,低于上行带宽/8 Byte sent/sec 。
3.内存
(1)内存使用率,可用内存数量(Avalable Memorry),单位为M,“页”是内存的存储数据的单位
(2)内存的页交换频率(page/sec)内存和虚拟内存之间的交换程度,也是内存和硬盘之间的数据交换,这个值越低越好
缓存:分配给一个应用程序使用的内存,是内存层面上的缓存,不是浏览器在硬盘上保存的静态资源
虚拟内存:利用一块硬盘区域模拟内存操作,在很早之前内存贵且小,硬盘大且便宜
4.硬盘:所有的程序数据都保存在硬盘上,程序运行时数据保存在内存上
(1)硬盘使用率:LogicDisk %disk time
(2)硬盘队列长度Avg Disk Length(Logic Disk C)
三:内存、硬盘、CPU的关系
CPU的处理频率、内核数量、一级缓存、二级缓存、三级缓存 缓存和内存直接数据交换
硬盘:本身自带缓存,16M 32M 固态硬盘:512M,1G
四:多线程
1.多线程应用
下载软件:多线程;CPU:多核多线程;边听歌,边上网,边聊天,边工作;
分布式应用服务器:多线程,每个线程负责一个用户请求;
数据库:多线程,每个线程处理一个SQL请求
2.线程池
用于管理多线程的一种机制,可以设置线程数,但是线程主要是消耗CPU资源,CPU资源是有限的,CPU满就会变慢,
队列变长系统不至于奔溃,内存满了就会奔溃,一般设置整个系统资源的四分之三,就可以了。
3.动态影响:
(1)如发一个帖子时间3s,60秒的时间内可以发送20个请求,如果没发个帖子暂停2s,请问60S可以发多少
(2)三层架构 C-S-D,瓶颈可能出现在任意一层,S端线程数是100,调成1000个,可以吗?
(3)如果线程数修改成1000,服务器可以了,但是数据库那面可以吗?数据库也要设置1000个线程
4.演示案例
如APACHE服务器线程数调整为10,并发10个用户没有问题;如果并发20个用户,显示连接服务器超时
注:每个应用系统都有线程数的设置,每个应用程序也有缓存的设置,如Tomcat下java内存的设置,这些都需要关注